Вы можете изменить валидаторы для элемента управления формы, когда значение другого элемента управления формы изменяется, подписавшись на 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