我的应用运行正常。我想使用AOT加速加载应用程序,并且由于检查FormA而导致ngc和AOT设置出现编译错误
在打字稿中,我的表单带有FormArray字段:
private buildForm() {
this.taskForm = this.formBuilder.group({
questions: this.formBuilder.array([
])
}
}
在模板中:
<h3 *ngIf="taskForm.get('questions').length < 1" >Render Decision</h3>
AOT编译:
node_modules/.bin/ngc -p src/tsconfig-aot.json
错误:
my-component.component.ngfactory.ts:4530:59: Property 'length' does not exist on type 'AbstractControl'.
答案 0 :(得分:6)
我通过将.get()
的结果手动转换为FormArray
找到了此问题的解决方案。
它在Github问题中有所描述,但我会在这里重复一遍以获得良好的衡量标准。
在控制器中提供一个getter:
get formArray() {
// Typecast, because: reasons
// https://github.com/angular/angular-cli/issues/6099
return <FormArray>this.form.get('formArray');
}
在您的模板中,您现在可以访问FormArray
。
e.g:
[disabled]="formArray.length > 0 && formArray.at(formArray.length - 1).invalid"
答案 1 :(得分:1)
我认为应该是
<h3 *ngIf="taskForm.get('questions').controls.length < 1" >Render Decision</h3>