我正在使用自定义验证程序来检查2个输入的值是否匹配:
import { FormGroup } from '@angular/forms';
// custom validator to check that two fields match
export function MustMatch(controlName: string, matchingControlName: string) {
return (formGroup: FormGroup) => {
const control = formGroup.controls[controlName];
const matchingControl = formGroup.controls[matchingControlName];
if (matchingControl.errors && !matchingControl.errors.mustMatch) {
// return if another validator has already found an error on the matchingControl
return;
}
// set error on matchingControl if validation fails
if (control.value !== matchingControl.value) {
matchingControl.setErrors({ mustMatch: true });
} else {
matchingControl.setErrors(null);
}
}
}
这适用于匹配一对输入,如下所示:
ngOnInit() {
this.applicationForm = this.formBuilder.group({
firstName: ['', Validators.required],
password: ['', [Validators.required, Validators.minLength(6)]],
confirmPassword: ['', Validators.required],
acceptTerms: [false, Validators.requiredTrue]
}, {
validator: MustMatch('password', 'confirmPassword')
});
}
但是我不知道如何再次启用另一个对,例如电子邮件和确认电子邮件。
做
validator: MustMatch('password', 'confirmPassword'), validator2: MustMatch('email', 'confirmEmail')
没有错误,但不执行任何操作,验证仍然适用于密码,但不适用于电子邮件。您不能具有相同名称的多个属性,因此我尝试使用“ validator2”。
我不能叫一个全新的人
{
validator: MustMatch('password', 'confirmPassword')
}
在this.formBuilder.group({})中,因为它仅接受2个参数。
答案 0 :(得分:2)
在doc中,您必须这样做
validators: [
MustMatch('password', 'confirmPassword'),
MustMatch('email', 'confirmEmail')
]