Angular 4动态表单组

Was*_*lil 5 typescript angular

我正在尝试创建一个动态表单组,我试图实现这一目标

在此输入图像描述

在添加更多点击添加2动态字段我调用此功能:

onAddSurgeries(){
    const control = new FormGroup({
        'surgery': new FormControl(null),
        'illness': new FormControl(null)
    });
      (<FormArray>this.form.get('surgeries')).push(control);
}
Run Code Online (Sandbox Code Playgroud)

这就是我的html的样子:

<tr *ngFor="let ctrl of form.get('surgeries')['controls']; let i = index">
   <td><input type="text" class="form-control" [formControlName]="ctrl['controls'].surgery"></td>
   <td><input type="text" class="form-control" [formControlName]="ctrl['controls'].illness"></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

我知道我正在做的错误,formControlName不应该是" ctrl['controls'].surgery"我应该把"我" formcontrolname当我只有一个formcontrol而不是2个控件formgroup,但在这种情况下我不知道我应该输入什么formControlName因为当我提交表单时,两个输入的值都是空的,因为它没有与formgroup控件同步

AJT*_*T82 7

您缺少(至少从问题中)标记formArrayName. 您还将表单组推送到您的表单数组,模板中需要在迭代中用索引值标记。那么您的formControlNames 只是您指定的名称,即surgeryillness

<table>
  <ng-container formArrayName="surgeries">
    <tr *ngFor="let ctrl of form.get('surgeries')['controls']; let i = index" 
      [formGroupName]="i">
      <td><input type="text" class="form-control" formControlName="surgery"></td>
      <td><input type="text" class="form-control" formControlName="illness"></td>
    </tr>
  </ng-container>
</table>
Run Code Online (Sandbox Code Playgroud)

演示