3 回答
TA贡献1821条经验 获得超4个赞
动态设置验证器时,我们需要调用updateValueAndValidity(). 还记得添加emitEvent: false,这意味着valueChanges不会被触发(以防止循环)。因此,将您的代码更改为:
phoneControl.valueChanges.subscribe(() => {
if (phoneControl.value === "") {
phoneControl.setValidators(null);
// or
// phoneControl.setValidators([]);
// or as mentioned by Tilak
// phoneControl.clearValidators();
} else {
phoneControl.setValidators(this.phoneValidator());
}
phoneControl.updateValueAndValidity({emitEvent: false});
});
TA贡献1859条经验 获得超6个赞
我会建议你这样做 -
if (phoneControl.value === "") {
phoneControl.clearValidators();
} else {
phoneControl.setValidators(this.phoneValidator());
}
phoneControl.updateValueAndValidity({emitEvent: false});
清除验证器比将其设置为 null 更好。
添加回答
举报