Новичок в Angular и пытается добавить специальный валидатор электронной почты, который пойдет на мой сервер и проверит, используется ли уже адрес электронной почты.
Но, похоже, не удается получить сообщение об ошибке, отображаемое в форме,Вот как я тестирую его, прежде чем пытаться подключиться к серверу.
К вашему сведению - вызывается «emailMatchValidator ()», но я не могу заставить его отображать какие-либо сообщения об ошибках в форме!
Может быть, я должен попробовать что-то кроме .touched!
ngOnInit() {
this.createRegisterForm();
}
createRegisterForm() {
this.registerForm = this.fb.group({
gender: ['male'],
email: ['', [Validators.required, Validators.email]],
username: ['', [Validators.required, Validators.minLength(4), Validators.maxLength(10)]],
knownAs: ['', Validators.required],
dateOfBirth: [null, Validators.required],
city: ['', Validators.required],
country: ['', Validators.required],
password: ['', [Validators.required, Validators.minLength(4), Validators.maxLength(8)]],
confirmPassword: ['', Validators.required]
}, {
validator: [this.passwordMatchValidator, this.emailMatchValidator]
});
}
emailMatchValidator(g: FormGroup) {
return g.get('email').value !== 'emailaddress@gmail.com' ? null : {
emailExists: true
};
}
<div class="form-group">
<input type="email"
[ngClass]="{'is-invalid': registerForm.get('email').errors && registerForm.get('email').touched}
|| registerForm.get('email').touched && registerForm.hasError('emailExists')"
class="form-control"
formControlName="email"
placeholder="Email">
<div class="invalid-feedback" *ngIf="registerForm.get('email').touched && registerForm.get('email').hasError('required')">
Email is required
</div>
<div class="invalid-feedback" *ngIf="registerForm.get('email').touched && registerForm.get('email').hasError('email')">
Invalid email address
</div>
<div class="invalid-feedback" *ngIf="registerForm.get('email').touched && registerForm.get('email').hasError('emailExists')">
Email address already in use
</div>
</div>