出现错误:formGroup需要一个FormGroup实例。请传递一个]

问题描述 投票:0回答:2

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

formGroup需要一个FormGroup实例。请通过]

这是我的示例:dynamic-reactive-forms

我是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));
  }
angular angular-reactive-forms angular-forms angular-formbuilder
2个回答
0
投票
<div [formGroup]="alltabs">

也许您忘记了alltabs


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的每个索引上。

© www.soinside.com 2019 - 2024. All rights reserved.