2016-06-28 3 views
1

Как я могу реализовать свой пользовательский валидатор в Angular 2?Как я могу реализовать свой собственный валидатор на Agular 2?

Я нашел this plunker:

constructor(private fb: FormBuilder) { 
    this.form = fb.group({ 
     'singleSelection': ['Rio', [App.validateCity]] // initial value as string 
     'multipleSelection': [['Red','Blue'], [App.validateColor]] // initial value as array 
    }); 
} 

static validateCity(c: FormControl) { 
    if (c.value !== 'New York') { 
     return { citySucks: true }; 
    } 
    return null; 
} 

static validateColor(c: FormControl) { 
    if (c.value.indexOf('Green') < 0) { 
     return {badColor: true}; 
    } 
    return null; 
} 

Но, я думаю, было бы лучше реализовать интерфейс Validator, как класс MinLengthValidator. Но я не знаю, как его использовать!

ответ

1

// Контроль обработки

  this.form = fb.group({ 
      'singleSelection': ['Rio', this.text({min: 10})] 
      }); 

// Функция Text для обработки мин значение

  public static text(config = {}): ValidatorFn { 
      return (control: Control): {} => { 
       if(!control) { 
        return null; 
       } 

       let c: string = control.value; 

      if(config.min) { 
       if(c.length < config.min) { 
        return { 
        "This field must have at least " + config.min + " characters." 
        }; 
       } 
      } 
      }} 
Смежные вопросы