угловое 5 условно проверяет поле на основе значения другого поля - PullRequest
0 голосов
/ 21 октября 2018

Как условно проверить поле на основе значения другого поля?Вот что я пробовал, но, похоже, не работает

this.PDform = _formbuilder.group({
    [...]
    'intlNumber': ['',this.nationality == 'Abroad' ? Validators.compose([Validators.pattern(this.phoneNumberExp), Validators.maxLength(14), Validators.minLength(11), Validators.required]) : Validators ]
    [...]
})

1 Ответ

0 голосов
/ 21 октября 2018

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

const control1 = <FormControl>this.form.get('control1');
const control2 = <FormControl>this.form.get('control2');

control1.valueChanges.subscribe(value => {
  if (value === 'first-condition') {
    control2.setValidators([Validators.required, ...])
  }
  else {
    control2.setValidators(null);
  }

  control2.updateValueAndValidity();
});

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

Вот пример StackBlitz: https://stackblitz.com/edit/conditional-validation

...