Пользовательская проверка Angular 6 Reactive Form для выбранного выпадающего элемента - PullRequest
0 голосов
/ 30 января 2019

У меня есть реактивная форма, которая содержит FormControl, который является элементом.Он отображается в шаблоне следующим образом:

<select name="{{ xxx }}" [formControl]="c">
  <option *ngFor="let item of stringArray" value="{{ item }}">{{ item }}</option>
</select>

К нему применен специальный валидатор, предназначенный для того, чтобы сделать поле обязательным, если второй FormControl имеет значение, а не иначе (передается партнерво втором элементе управления):

if ((control.value == null || control.value === '') && (partner.value != null && partner.value !== '')) {
  return { 'RequiredPair': true };
} else {
  return null;
}

Проверка работает, если я выбираю что-то из выпадающего списка, затем введите значение и удалите его из поля парного номера.Это не работает, если я просто помечаю это числовое поле как затронутое, и никогда не работает в поле выбора.У меня есть функция, чтобы пометить все FormControls в форме как затронутые, рекурсивно, при попытке отправки формы.

Единственный раз, когда я мог заставить его работать с выбором, это добавление ||control.value === 'одна из опций' для валидатора и выбор этой опции.

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

Редактировать: минимальная реализация на stackblitz

...