Angular FormArray - AbstractControl 类型上不存在属性控件

use*_*561 3 angular

我想在 Angular7 中构建表单数组

控件带有红色下划线。我什至在提供应用程序之前就遇到了这个错误:

“AbstractControl”类型上不存在属性“controls”

成分

addSubmenugroup(j) {
    console.log(j);
    const control = <FormArray>this.form.get('submenus').controls[j].get('submenugroups');
   // console.log(control);
    control.push(this.initSubmenugroup());  
  }


  removeSubmenugroup(j){
     const control = <FormArray>this.form.get('submenus').controls[j].get('submenugroups');
     control.removeAt(j);
  }
Run Code Online (Sandbox Code Playgroud)

当我点击提交按钮时,它应该生成表单数组。

小智 7

get方法FormGroup返回的值,AbstractControl这就是为什么静态类型检查器给你一个错误。AbstractControl本身没有controls属性。

https://angular.io/api/forms/FormControl点击此处了解更多信息。

你能做的是

const formArray = this.form.get('submenus') as FormArray;
const secondArray = formArray.get('submenugroups`) as FormArray;
const control = secondArray.controls[...] as FormControl;

// Continue with your logic.
Run Code Online (Sandbox Code Playgroud)


Nas*_*hil 6

?另外,您可以在 html 文件中使用安全导航运算符, 。

改变:

yourForm.get('myField').controls
Run Code Online (Sandbox Code Playgroud)

到:

myForm.get('myField')?.controls
Run Code Online (Sandbox Code Playgroud)