这里已经存在类似的问题(设置初始值Angular 2 reactive formarray)但我对答案不满意或者可能正在寻找其他解决方案.
我认为使用FormArray的重点是传递对象数组,它应该创建相同数量的组件.但是在上面的示例中,如果查看提供的plunker,即使提供了两个Addresses对象,也会创建一个Address,因为它的空白版本已经在ngOnInit()中创建.
所以我的问题是,如果在ngOnInit()我有这样的地址:this._fb.array([])//空白列表,那么我该如何设置它的值,它动态地从N个地址创建N个地址在我的TypeScript数组中?
要设置值并从FORM数组中删除值,请参见以下代码。这是一个一般的例子。请调整您的代码
import { FormArray, FormBuilder, FormGroup} from '@angular/forms'; export class SomeComponent implements OnInit { consutructor(public fb:FormBuilder) { } public buildCollaboratorsGroup(fb:FormBuilder): FormGroup { return fb.group({ email:'', role:'' }); } ngOnInit() { public settingsForm: FormGroup = this.fb.group({ collaborators:this.fb.array([this.buildCollaboratorsGroup(this.fb)]) }); this.setFormArrayValue(); } // Here I'm setting only one value if it's multiple use foreach public setFormArrayValue() { const controlArray =this.settingsForm.get('collaborators'); controlArray.controls[0].get('email').setValue('yourEmailId@gmail.com'); controlArray.controls[0].get('role').setValue(2); } // Here removing only one value if it's multiple use foreach public removeFormArrayValue() { const controlArray = this.settingsForm.get('collaborators'); controlArray.removeAt(0); } }