0

我正在尝试使用reactive forms单击按钮时添加的动态值。我收到以下错误:

formGroup 需要一个 FormGroup 实例。请传入一个

这是我的例子:动态反应形式

我是新手reactive forms。文件中的一些代码ts

let numberOfTiles = document.getElementsByClassName("tiledata").length;
    if (this.t.length < numberOfTiles) {
      for (let i = this.t.length; i < numberOfTiles; i++) {
        this.t.push(this.formBuilder.group({
          tabName: ['', Validators.required],
          dashboardName: ['', Validators.required],
          linkTo: ['', Validators.required],
          linkSelected: ['', Validators.required]
        }));
      }
}

get f() { return this.dynamicForm.controls }
  get t() { return this.f.alltabs as FormArray; }

  onSubmit() {
    this.submitted = true;
    if (this.dynamicForm.invalid) {
      return;
    }
    alert('SUCCESS!! :-)\n\n' + JSON.stringify(this.dynamicForm.value, null, 4));
  }
4

2 回答 2

0
<div [formGroup]="alltabs">

也许你忘记了alltabs

于 2019-12-13T05:46:17.390 回答
0

试试这个有效的 StackBlitz

您的代码中几乎没有遗漏任何东西。我已经稍微改变了你的代码。看看下面的代码。

    <form [formGroup]="dynamicForm" (ngSubmit)="onSubmit()">
            <div formArrayName="alltabs">
        <div *ngFor="let item of t.controls; index as i" [formGroupName]="i">

allTabs是一个 FormArray,所以在 HTML 中你必须像 formArray 一样定义它。显然数组有迭代,所以你必须遍历它们并找到你的formGroupName哪个总是索引,因为每个表单组都在 formArray 的每个索引上。

于 2019-12-13T05:54:45.897 回答