我在运行 ng build -aot 时仍然遇到相同的构建错误
生成错误表明类型'AbstractControl'不存在属性'controls'。
我的表格如下所示 component.ts
HTML看起来像这样 component.html
答案 0 :(得分:0)
链接很多!
FromGroup
具有格式为controls: { [key: string]: AbstractControl; }
的属性。这意味着,在您的HTML中,当您编写createUserForm.controls.password
时,AOT编译器将其理解为类型AbstractControl
的对象-反过来, not 不会声明一个属性名为controls
!
现在,编译器无法理解您的password
组是实际的FormGroup
-它所了解的只是它是一个AbstractControl
(可能是一个控件,组或数组)。为了向AOT编译器显示password
实际上是一个组,您可以在组件文件中声明一个辅助获取器:
get passwordGroup(): FormGroup { return this.createUserForm.controls.password as FormGroup; }
然后可以转到HTML文件并正确找到子控件:
<app-validation-messages [control]="passwordGroup.controls.password" ></app-validation-messages>
所有这些,我个人不喜欢使用嵌套的组和控件。相反,您可以使app-validation-messages
组件实现ControlValueAccessor
接口,并使其提供NG_VALUE_ACCESSOR令牌。这样,您就可以使用formGroupName
和formControlName
指令来控制值:
<div formGroupName="password">
<app-validation-messages formControlName="password"></app-validation-messages>
</div>