Angular 形式:Validators.email 与自定义正则表达式

Angular forms: Validators.email vs custom regex

在这个项目中,我看到人们同时使用 angular 的 "built-in" 验证器和自定义验证器。

内置如下:

this.emailForm = fb.group({
  name: [null, Validators.required],
  email: [
    null,
    {
      validators: [Validators.required, Validators.email],
      asyncValidators: []
    }]
});

自定义的看起来像:

const EMAIL_REGEX = /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;

export class CustomValidators {
  getEmailValidator(): any{
    return Validators.pattern(EMAIL_REGEX);
  }
}

并在 formBuilder 中使用:

   this.registerForm = this.formBuilder.group({
      'displayName' : [''],
      'email' : ['', [Validators.required, this.customValidators.getEmailValidator()]],
    });

与内置的 angular 表单验证器相比,自定义(容易出错)正则表达式包装验证器是否会增加价值?

使用模式验证器从用户那里获取严格的电子邮件总是好的。

如果我们使用 in-built 验证器 Validators.email,这会使 abcd@example 有效。

并且使用正则表达式模式,我们可以自定义电子邮件验证,使其仅在具有完整的电子邮件地址时才有效,例如 abcd@example.com

因此,通过使用 pattern/custom 个验证器,我们可以选择自定义验证

请找到工作plnkr