你需要的是
FormArray
是的。给定具有两个formcontrols名称和姓氏的多个元素(如示例中所示),可以执行以下操作:
https://stackblitz.com/edit/angular-ztueuu
下面是发生的事情:
您可以像以前那样定义表单组,但使用一个字段
福尔马雷
类型
ngOnInit() {
this.form = this.fb.group({
items: this.fb.array([this.createItem()])
})
}
接下来定义上面使用的helper方法
createItem()
使我们与要倍增的控件集分组
createItem() {
return this.fb.group({
name: ['Jon'],
surname: ['Doe']
})
}
最后一个方法是你想在这个集合中增加项目:
addNext() {
(this.form.controls['items'] as FormArray).push(this.createItem())
}
把这个和下面的html结合起来。我们正在迭代数组项并显示组中的字段。这里的表单组名是数组的索引。
<form [formGroup]="form" (ngSubmit)="submit()">
<div formArrayName="items"
*ngFor="let item of form.controls['items'].controls; let i = index">
<div [formGroupName]="i">
<input formControlName='name'>
<input formControlName='surname'>
</div>
</div>
<button type="button" (click)="addNext()">Add Next</button>
<button type="submit">Submit</button>
</form>
您还可以通过展开项集来创建表单。