На стороне HTML у меня есть:
<mat-select #footageSelects [(ngModel)]="selectedItems[element.id]">
<ng-container *ngFor='let opt of element.items; index as index'>
<mat-option [value]="opt">{{opt.label}}
</mat-option>
</ng-container>
</mat-select>
На стороне TS у меня есть:
@ViewChildren('footageSelects') _footageSelects: QueryList<ElementRef>;
....
this._footageSelects.toArray().map(x => {
setTimeout(() => {
//sets a value in the select if not defined or no more in the options
if (!x['options'].some(y => y['value'] === x['value'])) {
x['value'] = x["options"]["first"]["value"];
}
});
});
Этот код описывает список mat-select
компонентов, которые могут быть обновленыесли выбранного значения больше нет в списке их возможных вариантов.Моя проблема в том, что каждый из них связан двусторонним связыванием с записями объекта selectedItems
, но при присвоении x['value'] = ...
новое значение не распространяется в selectedItems
.Нелегко изменить словарь в приведенном выше фрагменте, поскольку у меня нет соответствующего ключа.Есть ли метод, отличный от x['value'] = ...
, который бы сохранял здесь двойную привязку?
Вот пример поведения, на которое я указываю:
https://stackblitz.com/edit/angular-tdsywh