Невозможно предварительно выбрать значения в множественном выборе в угловых - PullRequest
0 голосов
/ 20 сентября 2018

Невозможно предварительно выбрать значения, хотя список [selectedModels] заполнен [такими же объектами] из списка [options].

 <select multiple [(ngModel)]="selectedModels" class="col-md-7 form-control">
      <option [ngValue]="obj" [selected]="checkIfSelected(obj)" *ngFor="let obj of options">{{obj.name}}</option>
 </select>

Пробовал с помощью [selected], но не может быть успешным.Метод 'checkIfSelected' возвращает правильные логические значения.

Нужна быстрая помощь.Спасибо !!

После загрузки списка selectedModels из сервисного вызова, изменения объектов из списка опций

this.selectedModels.forEach(sm => {
      sm = this.options.find(o => o.id == sm.id);
})

1 Ответ

0 голосов
/ 20 сентября 2018

Основная проблема заключается в том, что вы пытаетесь установить ссылочную переменную внутри метода forEach, который не будет иметь эффекта в итерируемом массиве.

Это было бы в случае , если бы вы бы установили отдельных членов ссылочной переменной , но это оставило бы вас с 2 различными объектами, что неизбежно сломало бы выборфункциональность.

Простейшим способом решения вашей проблемы (отслеживание выбранных объектов + обновление выбранных объектов при загрузке параметров) было бы использовать неизменный подход путем изменения:

this.selectedModels.forEach(sm => {
      sm = this.options.find(o => o.id == sm.id);
})

К

const nextSelected = this.options
  .filter(option => this.selectedModels.some(selected => selected.id === option.id)
this.selectedModels = nextSelected;

См. этот стек для набора примеров, демонстрирующих мой ответ.

...