通知控制更改为 {emitEvent: false}

Be notified of control changed with {emitEvent: false}

我试图创建一个工具来显示 formControl 的错误。基本上,我的目标是在我的自定义 CVA 中提供一个配置,例如

  <custom-control
   [errorConfig]="[
      { name: 'required', message: 'Email is required' },
      { name: 'email', message: 'Email is invalid' }
   ]"
  ></custom-control>

并拾取并显示正确的错误。

我通过订阅控件的 statusChanges 事件完成了它,除了一件事外它工作得很好:当值随着 { emitEvent: false } 发生变化时,statusChanges 将永远不会被调用。

我知道这是为了在设置 emitEvent: false 时不调用此 eventEmitter,但是有什么办法可以克服这个问题吗? 有没有办法通知 setError/patchValue/updateValueAndValidity 方法被 emitEvent: false 调用? 或者也许有人知道我还能听什么来更新显示的错误?

好的,所以有一种方法可以从 @angular/forms 实现 Validator。它有 validate 方法,即使事件发射被禁用也会被调用。