Angular 2 AbstractControl运行时

时间:2016-07-19 11:42:24

标签: angularjs node.js angular npm runtime

我正在按照这个答案https://stackoverflow.com/a/38064881/3874858来实现我的Angular 2应用程序的“添加更多”功能。与此答案相关联的项目已上载到http://plnkr.co/edit/nHSIsciSZNTQzQjxkXsk?p=preview。不幸的是,要开始这个项目,我必须对这些行进行评论

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);

并输入“npm start”然后取消注释。如果我不评论它们,我会收到这些错误:

app / Components / companyInsertion.component.ts(37,28):错误TS2339:属性'payOffs'在类型'{[key:string]上不存在:AbstractControl; }”。 app / Components / companyInsertion.component.ts(56,24):error TS2339:属性'payOffs'在类型'{[key:string]上不存在:AbstractControl; }”。 app / Components / companyInsertion.component.ts(57,57):error TS2339:属性'payOffs'在类型'{[key:string]上不存在:AbstractControl; }”。 app / Components / companyInsertion.component.ts(63,24):error TS2339:属性'payOffs'在类型'{[key:string]上不存在: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))

所以现在我可以运行该应用程序,但我非常不喜欢每次启动服务器时都要发表评论的必要性。有没有解决方案?

2 个答案:

答案 0 :(得分:2)

这很糟糕,但我发现围绕这些Typescript错误的唯一方法是首先转换为FormArray。这真的太烦人了,我希望将来Angular 2的打字更新可能有助于解决。

(<FormArray> this.form.find('pay_offs')).push(this.createPayOffFormGroup(po))

答案 1 :(得分:0)

我找到的唯一解决方案是:

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