0

我正在使用 Angular8 并尝试使用 addControl 将子 FormGroup 添加到表单中:

    this.testForm = new FormGroup({
        id: new FormControl(0),
        people: new FormGroup({
        }),
    });
    this.testForm.controls['people'].addControl('numbers', new FormGroup({
        number: new FormControl('1234')
    }));

这给了我编译器错误: error TS2339: Property 'addControl' does not exist on type 'AbstractControl'.

真的坚持这一点,所以所有的帮助都非常感谢!

4

2 回答 2

0

AbstractControl 的 FormGroup 扩展类具有 addControl,并且此方法不是父类 AbstractControl 的一部分。所以当你使用get方法时,返回的元素是一个AbstractControl,而不是FormGroup,所以你应该确保返回的元素是一个FormGroup,并正确地转换它以使用addControl方法。

考虑到这一点,您可以使用 addControl,在代码中添加如下内容:

abstractControl : AbstractControl = this.formGroup.get(tab.id);
if(abstractControl instanceof FormGroup){
    (<FormGroup>abstractControl).addControl(segment.id, this.formBuilder.group({}));
}
于 2020-02-19T12:46:31.603 回答
0

类型断言应该足够了:而不是

    this.testForm.controls['people'].addControl( // ...

    (this.testForm.controls['people'] as FormGroup).addControl( //...
于 2020-02-19T12:46:40.933 回答