我有一个嵌套的formgroup,如下所示:
this.formGroup: FormGroup: {
// ...
controls: {
"GENERAL_AND_PERSONAL_QUESTIONS": { // FormGroup object... }
}
}
在顶级表单组中,我可以轻松添加如下控件:
this.formGroup.addControl(tab.id, this.formBuilder.group({}));
但是,由于某些原因,无法向子窗体组添加任何控件。我试着这样添加它们:
// tab.id = "GENERAL_AND_PERSONAL_QUESTIONS";
this.formGroup.get(tab.id).addControl(segment.id, this.formBuilder.group({}));
但它总是抛出一个编译错误,说:
Property 'addControl' does not exist on type 'AbstractControl'.
非常感谢您的帮助:)
最佳答案
FormGroup
中的扩展类具有addControl且此方法不属于父类AbstractControl
的一部分。因此,当您使用方法get时,返回的元素是一个AbstractControl
,而不是AbstractControl
,因此您应该确保返回的元素是一个FormGroup
,并将其正确转换为使用addcontrol方法。
考虑到这一点,可以使用addcontrol,在代码中添加如下内容:
abstractControl : AbstractControl = this.formGroup.get(tab.id);
if(abstractControl instanceof FormGroup){
(<FormGroup>abstractControl).addControl(segment.id, this.formBuilder.group({}));
}
我这样做是为了澄清
举例说明我在上面代码中的意思。示例是src/app.ts中的test method