我有一个动态构造行的表,如下所示
< form [formGroup] =‘employeeForm’>< table class =“table table-dark”> < THEAD> < TR> < th scope =“col”> …
Akber Iqbal的样本 链接到 在他们的评论中使用FormBuilder做你想要的。不过没有FormBuilder,可能更容易看到类型如何匹配。一个 FormControl 表示html中的实际表单元素(input,textarea等)。 FormGroup 和 FormArray 是包含FormGroups,FormArrays和/或FormControls混合的容器。构造FormGroup或FormArray时,传入其初始子控件。
FormControl
FormGroup
FormArray
在父FormGroup下面,employeeForm包含一个FormArray。我将向FormArray添加两个默认子FormControl:
employeeForm: FormGroup; nameArray: FormArray; ngOnInit(){ this.nameArray = new FormArray([ new FormControl('name1'), new FormControl('name2') ]); this.employeeForm = new FormGroup({ employeeNameArray: this.nameArray }); }
在模板中,您应该能够遍历FormArray的子项
<tr *ngFor="let employeeName of nameArray.controls; let i=index"> <td>Name: <input type="text" [formControlName]="i"></td> </tr>
如果您希望每个员工有多个表单元素(一个用于名称,一个用于地址),您可能希望再创建一个嵌套层,其中FormArray的直接子项是FormGroup,然后每个包含一个名称FormControl和一个地址FormControl 。