2016-09-02 117 views
1

我想创建一个数组,内有数组。属性“推”不存在类型'控制'

该数组是用于动态表单的,所以当用户想要添加一个新节时,它会将控制字段数组推送到数组,然后在Angular2中生成它。

但是我得到这个错误: Error:(43, 41) TS2339: Property 'push' does not exist on type 'AbstractControl'.

这是我的代码:

addDesign(){ 
    this.addForm.controls['design'].push(this.fb.group({ 
     name: this.fb.control(null, Validators.required), 
     a1: this.fb.control(null, Validators.required), 
     a2: this.fb.control(null, Validators.required), 
     a3: this.fb.control(null, Validators.required), 
     a4: this.fb.control(null, Validators.required), 
     a5: this.fb.control(null, Validators.required), 
     maxMark: this.fb.control(null, Validators.required) 
    })); 
} 

我的构造函数,初始化形式

constructor(private fb: FormBuilder, private auth: Auth, private authHttp: AuthHttp) { 
     this.addForm = fb.group({ 
      name: fb.control(null, Validators.required), 
      assignID: fb.control(null, Validators.required), 
      design: new ControlArray([]) 
     }) 
    } 

我试图做(<Control>this.addForm.controls['design']).push作为建议Angular2问题5871,但这并没有解决它。

我用的打字稿及Angular2 beta.17

回答

2

而不是铸造控制,尽量铸造ControlArray(应该有推声明)。

(<ControlArray>this.addForm.controls['design']) 
+0

感谢您的回复.. http://i.stack.imgur.com/cAGjX.jpg检查这个图片,虽然它应该很好根据该图,它确实工作,它推到阵列上,我忘了提到,但错误是与我的打字稿编译器检查intelering。我试图使用addControl,它不喜欢处理数组。虽然谢谢! –

+0

好的。试试你之前正在做的演员,而不是'( this.addForm.controls ['design'])'do'( this.addForm.controls ['design'])' – Paarth

+0

你的传奇!我不知道为什么我没有想到,非常感谢!如果你编辑你的主帖,我可以再勾选它,如果他们有相同的问题 –