Я написал пользовательский валидатор для адресов электронной почты, который выглядит следующим образом:Угловой 2 - валидатор всегда возвращает истину, даже если условие ложно
function emailValidator(control: FormControl): { [s: string]: boolean } {
if (!control.value.match(/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-][email protected][a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/i)) {
console.log('invalid');
return {invalidEmail: true};
}else{
console.log('valid');
return {invalidEmail: false};
}
}
Я использую валидатор, чтобы отобразить сообщение об ошибке на моей странице со следующей HTML:
<div class="formError" *ngIf="myForm.controls['email'].hasError('invalidEmail')">
<p>
<i class="fa fa-exclamation-triangle"></i> Enter your email address.
</p>
</div>
моего FormGroup выглядит следующим образом:
this.myForm = fb.group({
'content' : ['',Validators.minLength(10)],
'email' : ['',Validators.compose([Validators.required,emailValidator])],
'name' : ['',Validators.required],
'captcha' : ['',this.captchaValidator(this.captchaA,this.captchaB)]
});
Когда я ввожу неверный адрес электронной почты, сообщение об ошибке отображается так, как должно быть. Когда я ввешу действительный адрес электронной почты, сообщение также показывается. Когда введен правильный адрес электронной почты, строка «valid» регистрируется в моей консоли, что означает, что мой emailValidator возвращает false, и это должно привести к исчезновению сообщения об ошибке. Любая мысль о том, что может быть проблемой?