我使用 Angular Reactive Forms 构建了一个简单的表单。我有一个自定义 Validator 函数,它检查电话号码输入的格式。如果用户选择不输入电话号码,我想允许空输入,但如果他们输入电话号码,则验证他们的输入。
为了实现这一点,我订阅了表单控件上的值更改,并使用该setValidators方法在字段是否为空时切换验证:
phoneControl.valueChanges.subscribe(() => {
if (phoneControl.value === "") {
phoneControl.setValidators(null);
} else {
phoneControl.setValidators(this.phoneValidator());
}
});
该代码最初有效,form.valid是真实的。当我输入一个数字时,它会打开验证,然后根据我的 RegEx 成功验证它并显示错误。
但是,当我清空该字段时,错误不会消失并且表单仍然无效,即使我的代码应该将验证器设置为null. 您可以在上面的 StackBlitz 示例中看到这一点。
我不明白为什么会这样。有任何想法吗?
收到一只叮咚
慕丝7291255
相关分类