Я использую Angular8 реактивные формы. Я создаю форму, которая должна быть предварительно загружена с деталями выбранного элемента по идентификатору. Сведения об элементе отображаются в форме путем передачи существующих значений элемента в метод FormControl (). Эта часть все работает правильно.
Однако проблема заключается в возможности отображения значения по умолчанию, если опция была отфильтрована из-за перехода в неактивное состояние в более позднее время.
ВОПРОС: Как заполнить значение по умолчанию, которого больше нет в массиве опций выбора?
Пример:
Форма Элемент имеет поле выбора «Проект», в котором отображается список проектов из базы данных.
Запрос к базе данных возвращает только «активные» проекты. Проект - это объект со свойствами _id, ProjectName и Inactive.
// item.project
{"_id":"5d0699380a29581928374651",
"ProjectName":"Server upgrade to version 10",
"Inactive":0}
_id устанавливается в качестве значения, а ProjectName устанавливается в качестве отображаемого значения.
<mat-form-field appearance="outline" floatLabel="always" class="width-50p">
<mat-label>Project</mat-label>
<mat-select formControlName="Project">
<mat-option *ngFor="let project of projects" [value]="project._id">
{{project.ProjectName}}
</mat-option>
</mat-select>
</mat-form-field>
Элемент управления формы 'Project' установлен на существующий project._id по умолчанию.
Это работает до тех пор, пока проект не будет отфильтрован из-за того, что позднее будет отключен.
// Initialize form controls
this.itemForm = new FormGroup({
// other item properties...
'Project': new FormControl(item.project._id),
});
Как можно установить значение по умолчанию для параметра, которого больше нет в параметрах выбора?
Возможно, я могу начать с получения значения элемента, а затем добавить его в массив параметров и установить значение по умолчанию в элементе управления формы.