我想知道如何在 Angular2 中与控制组中的 OR 语句进行组合验证。例如,我有三个输入字段,我想将 1 个输入字段设置为必填项,将另外两个输入字段设置为 OR 之类的必填项。 [输入姓名] = 必填,([输入电子邮件] 或 [输入电话])= 必填。
this.userForm = this._formBuilder.group({
'name': ['', Validators.required],
'email': ['', Validators.compose([Validators.required, ValidationService.emailValidator]),
'phone': ['', Validators.required]]
});
group 方法采用第二个参数,您可以在其中定义自定义验证函数。这在验证规则取决于一个或多个其他字段的状态的情况下非常有用。
this.userForm = this._formBuilder.group({
'name': ['', Validators.required],
'email': ['', Validators.compose([Validators.required, ValidationService.emailValidator]),
'phone': ['', Validators.required]
}, { validator: this.oneRequired('email', 'phone') });
oneRequired(first:string, second:string) {
return (group: ControlGroup) => {
var control1 = group.controls[first];
var control2 = group.controls[second];
var a = Validators.required(control1) || { required: false };
var b = Validators.required(control2) || { required: false };
if (a['required'] && b['required']) {
control1.setErrors({ oneRequired: true });
control2.setErrors({ oneRequired: true });
}
else {
control1.setErrors(null);
control2.setErrors(null);
}
};
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)