问题描述: 当将一个嵌套的FormGroup添加到FormArray中时,可能会遇到“未找到控件”的错误。
解决方法: 以下是解决该问题的示例代码:
this.form = this.fb.group({
name: ['', Validators.required],
items: this.fb.array([])
});
get items(): FormArray {
return this.form.get('items') as FormArray;
}
addItem() {
const item = this.fb.group({
id: ['', Validators.required],
quantity: ['', Validators.required]
});
this.items.push(item);
}
这样做时可能会遇到问题,因为在添加新的嵌套FormGroup时,它的控件可能会被检测不到。为了解决这个问题,需要调用updateValueAndValidity()
方法来更新控件的状态。
addItem() {
const item = this.fb.group({
id: ['', Validators.required],
quantity: ['', Validators.required]
});
this.items.push(item);
item.updateValueAndValidity(); // 更新控件状态
}
这样,当添加新的嵌套FormGroup时,控件的状态就会被正确地更新,不再会出现“未找到控件”的错误。
希望以上解决方法能帮助到您!