Как мы можем показать проверки ошибок формы один за другим в Angular - PullRequest
0 голосов
/ 29 ноября 2018

Я новичок в Angular, и я создал один класс валидатора Custom EmailDomainError, и он работает нормально.

Но проблема заключается в том, что ошибка домена электронной почты отображается вместе с сообщением об ошибке проверки электронной почты. Как я могу решить эту проблему?действительно сбивает с толку, может кто-нибудь помочь мне, пожалуйста

Я думаю, что мне нужно проверить правильность шаблона электронной почты или нет в моем классе EmailDomainError, как я могу проверить это? Если я думаю, правильный путь и мой полный код --- https://stackblitz.com/edit/angular-bvihqj

ngOnInit

 ngOnInit() {

    this.employeeForm = this.fb.group({
      fullName: ['', [Validators.required, Validators.minLength(2), Validators.maxLength(10)]],
      contactPreference: ['email'],
      email: ['', [Validators.required, Validators.email, emailDomainError]],
      phone: [''],
      skills: this.fb.group({
        skillName: ['', [Validators.required]],
        experienceInYears: ['', [Validators.required]],
        proficiency: ['', [Validators.required]]
      })
    });

Этот объект содержит все сообщения проверки для этой формы

 formErrors = {
    'fullName': '',
    'email': '',
    'phone': '',
    'skillName': '',
    'experienceInYears': '',
    'proficiency': ''
  };


     validationMessages = {
        'fullName': {
          'required': 'Full Name is required.',
          'minlength': 'Full Name must be greater than 2 characters.',
          'maxlength': 'Full Name must be less than 10 characters.'
        },
        'email': {
          'required': 'Email is required.',
          'email': 'Valid Email id is required.',
          'emailDomainError': 'Email domain should be karvy.com'
        },
        'phone': {
          'required': 'Phone number is required.'
        },
        'skillName': {
          'required': 'Skill Name is required.',
        },
        'experienceInYears': {
          'required': 'Experience is required.',
        },
        'proficiency': {
          'required': 'Proficiency is required.',
        },
      };

emailDomainError

function emailDomainError(control: AbstractControl): { [key: string]: any } | null {
  const email: string = control.value;
  const domain: string = email.substring(email.lastIndexOf("@") + 1);
  if (email === '' || domain === "karvy.com") {
    return null;
  } else {
    return { "emailDomainError": true };
  }
}

enter image description here

1 Ответ

0 голосов
/ 29 ноября 2018

Привет AbhiRam. Я обновляю твой код, здесь есть ссылка для Здесь

В группе обновлений группы это как

email: ['', [Validators.required, emailError, emailDomainError]],

Код функции изменяется следующим образом *

*
 * emailDomainValidations
 * @param control 
 */

function emailDomainError(control: AbstractControl): { [key: string]: any } | null {
  const email: string = control.value;
  if (email && email.indexOf("@") != -1) {
    let [_, domain] = email.split("@");
    if (domain !== "karvy.com") {
      return {
        "emailDomainError": true,
       // "email": false
      };
    }

    else {
      return null;
    }
  }
}
function emailError(control: AbstractControl): { [key: string]: any } | null {
  const email: string = control.value;

  if( email.length <3 && email.length >=1){
    return { "email" : true}
  }
  else{
    return null;
  }

}
...