У меня есть реактивная форма, которая содержит 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