我在 Angular 10 应用程序中遇到问题,在初始化时将 formGroup 的状态传播到其父级。
问题:在组件初始化时,子表单的验证状态未在多个级别的父级中正确传播。
更准确地说,我有 3 个嵌套组件。它们都是表单,并且两个孩子都实现了 ControlValueAccessor。它们通过“formControlName”属性进行通信。最深的表单初始化错误(必填字段)。父级没有收到有效性状态(它仍然有效)。
这是问题的重现:
https://stackblitz.com/edit/ngx-sub-form-hzo8wj?file=src/app/app.component.ts
我希望“基本表单组”在初始化时无效。“level 2”的有效性应该在“level 1”中传播,然后在“base formgroup”中传播“level 1”。
它可能来自正常的角周期。
在等待更好的解决方案时,我发现了一个 hack:
public ngAfterViewInit(): void {
this._injector.get(NgControl).control.updateValueAndValidity();
}
在第一个角度周期之后,我们从子级手动重新启动对父级的验证。这是级联在所有子组件中的。
我怎么能避免使用这个黑客?