小编Lou*_*UTZ的帖子

嵌套 ControlValueAccessor 的角度验证状态未在父级中正确传播,如何实现此验证?

我在 Angular 10 应用程序中遇到问题,在初始化时将 formGroup 的状态传播到其父级。

问题:在组件初始化时,子表单的验证状态未正确传播到多个级别的父级中。

更准确地说,我有 3 个嵌套组件。它们都是表单,并且两个子级都实现 ControlValueAccessor。它们通过“formControlName”属性进行通信。最深的形式初始化错误(必填字段)。父级不会收到有效性状态(它仍然有效)。

这是问题的重现:

https://stackblitz.com/edit/ngx-sub-form-hzo8wj?file=src/app/app.component.ts

我希望“基本表单组”在初始化时无效。“级别 2”的有效性应在“基本表单组”中的“级别 1”然后“级别 1”中传播。

它可能来自正常的角度周期。

我在等待更好的解决方案时发现了一个 hack:

  public ngAfterViewInit(): void {
    this._injector.get(NgControl).control.updateValueAndValidity();
  }
Run Code Online (Sandbox Code Playgroud)

在第一个角度周期后,我们手动重新启动子级对父级的验证。这是级联在所有子组件中的。

我怎样才能避免使用这个黑客?

angular formgroups controlvalueaccessor

5
推荐指数
1
解决办法
2080
查看次数

标签 统计

angular ×1

controlvalueaccessor ×1

formgroups ×1