【发布时间】:2020-02-23 19:18:35
【问题描述】:
我正在尝试实现自定义角度函数来验证电子邮件地址, 一切都很好,除了当我输入 example@mail 时,验证不起作用,它认为电子邮件的地址是有效的
验证器.ts
static emailsLenghtAndFormat(control: AbstractControl): ValidationErrors | null {
const email = control.value;
const responseKo = { invalid: true };
const responseOk = null;
const responseKoMaxLength = { maxlength: true };
if (!email) {
return responseOk;
}
if (email.length > 100) {
return responseKoMaxLength;
}
const EMAIL_REGEXP = /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
if (email !== '' && (email.length <= 5 || !EMAIL_REGEXP.test(email))) {
return responseKo;
}
return responseOk;
}
authent.ts
this.formAuthentification = this.fb.group({
authentification: this.fb.group(
{
email: ['', [Validators.required, Validators.email, Validators.maxLength(100)]],
password: ['', Validators.required],
},
{
validator: [ValidatorsCustom.emailsLenghtAndFormat]
}
)
});
【问题讨论】:
-
实际上只有一种方法可以验证电子邮件 - 向该地址发送内容并等待回复。
标签: angular angular-reactive-forms angular-forms email-validation