2016-07-19 2 views
0

Я следовал этому ответу https://stackoverflow.com/a/38064881/3874858, чтобы реализовать возможность «Добавить больше» для моего приложения Angular 2. Проект, связанный с этим ответом, загружается на http://plnkr.co/edit/nHSIsciSZNTQzQjxkXsk?p=preview. К сожалению, начать этот проект, я должен прокомментировать эти строкиAngular 2 AbstractControl runtime

this.form.controls.payOffs.push(this.createPayOffFormGroup(po)) 
this.form.controls.payOffs.push(this.createPayOffFormGroup(emptyPayOff)); 
console.log("Added New Pay Off", this.form.controls.payOffs) 
this.form.controls.payOffs.removeAt(index); 

и типа «старт НПМ», а затем раскомментировать. Если я их не комментирую, я получаю следующие ошибки:

app/Components/companyInsertion.component.ts (37,28): ошибка TS2339: свойство 'payOffs' не существует в типе '{[key: string] : AbstractControl; }». app/Components/companyInsertion.component.ts (56,24): ошибка TS2339: свойство 'payOffs' не существует в типе '{[ключ: строка]: AbstractControl; }». app/Components/companyInsertion.component.ts (57,57): ошибка TS2339: свойство 'payOffs' не существует в типе '{[ключ: строка]: AbstractControl; }». app/Components/companyInsertion.component.ts (63,24): ошибка TS2339: свойство 'payOffs' не существует в типе '{[ключ: строка]: AbstractControl; }».

Итак, как я понимаю, этот код работает только во время выполнения. Я попытался это решение, но это не казалось, чтобы помочь: Issue with TypeScript compilation in Angular2 Forms путем изменения

this.form.controls.payOffs.push(this.createPayOffFormGroup(po)) 

Для

this.form.controls['payOffs'].value.push(this.createPayOffFormGroup(po)) 

Так что теперь я могу запустить приложение, но мне очень не нравится необходимость комментировать каждый раз, когда я запускаю сервер. Есть ли какие-либо решения?

ответ

0

Единственное решение, которое я нашел:

(this.form.controls as any)['payOffs'].value.push(this.createPayOffFormGroup(po)) 
+0

Это работает, но это всего лишь обходной путь. Каково решение? – smartmouse

2

Это отстой, но единственный способ, я нашел вокруг этой машинописи ошибок должны приводиться к FormArray первым. Это действительно раздражает, я надеюсь, что типичное обновление для Angular 2 в будущем может помочь решить проблему.

(<FormArray> this.form.find('pay_offs')).push(this.createPayOffFormGroup(po)) 
Смежные вопросы