Разделить пользовательский валидатор на несколько функций Angular 2 - PullRequest
0 голосов
/ 07 сентября 2018
    export class FormFieldErrorExample {
      email = new FormControl('', [Validators.required, Validators.email, this.lengthValidator]);

      getErrorMessage() {
        return this.email.hasError('required') ? 'You must enter a value' :
            this.email.hasError('email') ? 'Not a valid email' :
                'minimum length should be greater than 10';
      }
      lengthValidator(control : AbstractControl){

        if(control.value.length <10)    
        return {lengthError : true};
        else return this.anotherValidator(control);
      }
anotherValidator(control: AbstractControl){

 return {lengthError : true};
}

Я пытался разделить валидатор на другую функцию, но получаю сообщение об ошибке типа «Невозможно прочитать свойство» anotherValidator 'undefined'. Как я могу разделить валидатор на несколько функций и передать элемент управления правильно

https://stackblitz.com/edit/angular-psfasq-5yxaln

1 Ответ

0 голосов
/ 07 сентября 2018

Вы должны передать контекст this своему настраиваемому валидатору lengthValidator, используя bind ()

email = new FormControl('', [Validators.required, Validators.email, this.lengthValidator.bind(this)])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...