【发布时间】:2019-11-17 11:49:39
【问题描述】:
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>
【问题讨论】:
标签: angular typescript validation angular7 angular-reactive-forms