Угловые формы: Validators.email против пользовательского регулярного выражения

В этом проекте я вижу, что люди используют как «встроенный» валидатор angular, так и пользовательский.

Встроенная выглядит следующим образом:

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()]],
    });

Есть ли какой-либо особый случай, когда пользовательский (подверженный ошибкам) ​​валидатор регулярного выражения добавит ценность по сравнению со встроенным угловым форм?


person Jem    schedule 22.02.2018    source источник
comment
Для нас одна проблема заключалась в том, что серверная часть не принимала электронную почту, как встроенный валидатор электронной почты считал действительным, например, такое электронное письмо, как my@localhost   -  person AJT82    schedule 22.02.2018


Ответы (1)


Всегда полезно использовать средство проверки шаблонов, чтобы получить от пользователя строгое электронное письмо.

Если мы используем встроенный валидатор Validators.email, это делает abcd@example действительным.

И, используя шаблон регулярного выражения, мы можем настроить проверку электронной почты, чтобы сделать ее действительной только тогда, когда у нее есть полный адрес электронной почты, такой как [email protected].

Таким образом, используя шаблонные/пользовательские валидаторы, это дает нам возможность настроить проверку

Найдите рабочий plnkr.

person Vikash B    schedule 22.02.2018
comment
Спасибо, Викаш, теперь понятно - person Jem; 22.02.2018