我正在尝试编辑一个表单,当我想要显示要编辑的值时,使用setValue时,我得到一个错误"ERROR Error: Cannot find form control with name: purchases“。
component.ts
ngOnInit() {
this.form = new FormGroup({
customer: new FormGroup({
name: new FormControl(),
lastname: new FormControl(),
address: new FormControl(),
phone: new FormControl()
}),
createdAt: new FormControl(),
purchases: new FormArray([])
});
}
我的函数来编辑
onEdit(invoice) {
this.form.setValue(invoice)
}
component.html
<div class="col-md-8">
<div formGroupName="customer">
<h3>Customer</h3>
<label>Name: <input class="form-control" type="text" formControlName="name"> </label>
<label>Last Name:<input class="form-control" type="text" formControlName="lastname"></label>
<label>Phone:<input class="form-control" type="text" formControlName="phone"></label>
<label>Address:<input class="form-control" type="text" formControlName="address"></label>
</div>
<div><li formArrayName="purchases"></li></div>
</div>
控制台中的值
发布于 2018-09-27 06:13:24
该错误是由调用setValue()引起的,因为它执行严格的检查。
您正在尝试将多个项的数组分配给在索引0处只有一个初始FormGroup的FormArray。
在索引%1处赋值失败,因为它不存在。
解决这个问题的步骤:
FormControl('') }) )
while (purchasesFormArray.length) { purchasesFormArray.removeAt(0);}
Invoice.purchases.forEach(购买=> { purchasesFormArray.push(this._fb.group(purchase));});
修复代码如下:View in StackBlitz。
https://stackoverflow.com/questions/52525893
复制相似问题