Я использую реактивные формы Angular, и один из элементов управления форм является выборочным вводом.Параметры изменяются динамически, и когда пользователь выбирает значение, а затем параметры изменяются, старое значение остается значением элемента управления формой, даже если его больше нет в списке параметров (и, следовательно, оно не является приемлемым значением).
HTML:
<mat-select formControlName="example">
<mat-option *ngFor="let example of examples_filtered" [value]="example">
{{ example.frontend_name }}
</mat-option>
</mat-select>
TypeScript:
this.myForm.controls['someControl'].valueChanges.subscribe(
(value) => {
this.examples_filtered = [];
this.examples.forEach((example: Example, index: Number, array: Example[]) => {
if (example.value_id === value.id) {
this.examples_filtered.push(example);
}
});
}
);
Поскольку этот элемент управления формы использует Validators.required, ожидаемое поведение заключается в том, что элемент управления формы очищается (т. Е. Значениеустанавливается равным нулю) и его статус изменяется на «НЕВЕРНЫЙ».
Фактический результат заключается в том, что старое значение из ранее отфильтрованных примеров по-прежнему выбрано в элементе управления формы, и Validators.required помечает элемент управления формы как действительный.
Должен ли я сделать это вручную (пользовательский код) или есть механизм, который поддерживает Angular, который решает эту проблему?