首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(Angular 11) TypeError: control.registerOnChange不是一个函数

(Angular 11) TypeError: control.registerOnChange不是一个函数
EN

Stack Overflow用户
提问于 2021-07-23 20:57:50
回答 2查看 58关注 0票数 0

我需要动态表单中的值,但总是显示这个错误"ERROR Error: control.registerOnChange is not a function“

我像这样构建我的表单:

代码语言:javascript
运行
复制
referential.values.forEach(referentialValue => {
    const newFormGroup = new FormGroup({
      value: new FormControl(referentialValue.value),
      libelle: new FormControl(referentialValue.libelle),
      primaryColor: new FormControl(referentialValue.primaryColor),
      secondaryColor: new FormControl(referentialValue.secondaryColor),
      borderColor: new FormControl(referentialValue.borderColor),
      default: new FormControl('')
    });
    this.referentialArray.push(newFormGroup);
  });
this.form = new FormGroup({
  referentials: this.referentialArray
});
this.form.disable();

和html (不是整个):

代码语言:javascript
运行
复制
  <tbody formArrayName="referentials">
    <tr *ngFor="let referential of referentialArray.controls; let i = index">
      <td><input type="text"
          [formControlName]="i"></td>
      <td><input type="text"
          [formControlName]="i"></td>

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-23 21:22:11

您已关闭,请在引用循环中将formControlName更改为formGroupName

它看起来像这样:

代码语言:javascript
运行
复制
<form [formGroup]="myForm" (ngSubmit)="submit(myForm.value)">
  <div formArrayName="referentials">
    <div *ngFor="let child of myForm.get('referentials').controls; let i = index">
      <div [formGroupName]="i">
        <label>{{i+1}}. Label: </label>
        <input formControlName="label" /><br>
        <label>{{i+1}}. Value: </label>
        <input formControlName="value" />
      </div>
      <br>
    </div>
  </div>
  <button type="submit">Submit</button>
</form>

Working example on stackblitz

票数 1
EN

Stack Overflow用户

发布于 2021-07-23 21:22:01

我认为this.referentialArray是一个简单的数组

代码语言:javascript
运行
复制
this.form = new FormGroup({
  referentials: this.referentialArray
});

你能试试下面这样的东西吗?

代码语言:javascript
运行
复制
this.form = new FormGroup({
  referentials: new FormArray([])
});

var refFormArray = this.form.get('referentials') as FormArray;
referential.values.forEach(referentialValue => {
    const newFormGroup = new FormGroup({
      value: new FormControl(referentialValue.value),
      libelle: new FormControl(referentialValue.libelle),
      primaryColor: new FormControl(referentialValue.primaryColor),
      secondaryColor: new FormControl(referentialValue.secondaryColor),
      borderColor: new FormControl(referentialValue.borderColor),
      default: new FormControl('')
    });

    refFormArray.push(newFormGroup);
  });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68499579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档