【发布时间】:2021-08-02 05:15:34
【问题描述】:
我使用 ControlValueAccessor 已经有一段时间了,最近我遇到了一个我找不到解决方法的问题。
我创建了一些内部有 FormGroup 的组件(使用 ControlValueAccessor),并应用了一些特殊验证。
在父组件上,我对子组件(ControlValueAccessor 组件)是否需要有一些逻辑。
为了设置所需的验证器,我执行以下操作:
if(isRequired){
this.form.controls.get('mycustomcontrol').clearValidators();
this.form.controls.get('mycustomcontrol').setValidators(Validators.required);
}else{
this.form.controls.get('mycustomcontrol').clearValidators();
}
当我这样做时,我的孩子的 'validate' 方法停止被 angular 调用,因此不再运行我的组件自定义验证逻辑。
有谁知道这是否可以防止或告诉 angular 继续调用子组件上的验证的方法?
我创建了一个示例 stackblitz 来展示: https://stackblitz.com/edit/angular-custom-reactive-forms-b4jztm?
谢谢!
【问题讨论】:
-
你为什么要清除验证器?
-
@WillAlexander 我正在清除,因为该逻辑与另一个组件(复选框)相关。每当用户更改值时,它应该设置组件是否需要。
标签: angular angular-reactive-forms