Пользовательская проверка электронной почты с угловым - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь реализовать пользовательскую угловую функцию для проверки адреса электронной почты, все хорошо, кроме случаев, когда я набираю example @ mail, проверка не работает, и адрес электронной почты считается действительным

Validator.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;
  }

authenticnt.ts

      this.formAuthentification = this.fb.group({
        authentification: this.fb.group(
          {
            email: ['', [Validators.required, Validators.email, Validators.maxLength(100)]],
            password: ['', Validators.required],
          },

        {
          validator: [ValidatorsCustom.emailsLenghtAndFormat]
        }
        )
      });

1 Ответ

0 голосов
/ 28 октября 2019

Вы проверяете всю группу форм. В этом случае ваши входные данные не являются AbstractControl, это группа форм. Затем он будет структурировать вашу группу форм и попытаться найти регулярное выражение во всей строковой группе форм.

static emailsLenghtAndFormat(group: FormGroup): ValidationErrors | null {
    const email = group.get('email').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;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...