2016-09-02 6 views
1

Я пытаюсь создать массив, в котором есть массивы.Свойство 'push' не существует в типе 'Control'

Массив для динамической формы, поэтому, когда пользователь хочет добавить новый раздел, он массирует управляющие поля массиву и генерирует его в 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, инициализации формы

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 issue 5871, но это не решило.

Я использую машинопись и Angular2 beta.17

ответ

2

Вместо литья для контроля, попробуйте литья в ControlArray (который должен быть объявлен толчок).

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

Спасибо за ваш ответ .. http://i.stack.imgur.com/cAGjX.jpg проверить это изображение, хотя оно должно быть в порядке в соответствии с этой схемой, и это не работа, это нажать на-х массив , я забыл упомянуть об этом, но ошибка в inteferring с моей проверкой компилятора типов. Я попытался использовать addControl, и мне не нравятся манипуляции с массивами. Спасибо хоть! –

+0

Хорошо. Попробуйте выполнить кастинг, который вы делали раньше, но вместо '( this.addForm.controls ['design'])' do '( this.addForm.controls ['design'])' – Paarth

+0

вы легенда! Я не знаю, почему я так не думал об этом, спасибо! если вы отредактируете свой основной пост, я могу пометить его как правильно для других, если у них есть одна проблема –

Смежные вопросы