Параметры множественного выбора углового материала с объектом

Текущая установка:

  • Угловой 4
  • Угловой материал
  • База данных (Firestore)

Ожидаемое поведение:

  • Первоначально выбирая несколько объектов из моего массива внутри моего множественного выбора углового материала.

Текущее поведение:

  • Изначально ни один элемент не выбран.
  • Они правильно выбираются при нажатии на них.
  • Сохранение их в работе Firebase (Firestore) (сохранение ссылки на документ)

Дополнительные примечания:

  • Если я использую только свойство объекта, они изначально выбираются правильно.
  • classe.multiclassement — это массив ссылок
  • classes — мой массив объектов

Пример кода:

<mat-select placeholder="Multiclassement" [(ngModel)]="classe.multiclassement" multiple>
  <mat-option *ngFor="let c of classes | async" [value]="c">{{c.nom}}</mat-option>
</mat-select>


person DominikG    schedule 12.11.2017    source источник
comment
Можете ли вы создать plunker для его воспроизведения?   -  person Jared    schedule 12.11.2017


Ответы (1)


Поскольку мы имеем дело с объектами, объекты в вашем массиве multiclassesment не имеют ссылок на объекты в вашем массиве classes, поэтому Angular не может выполнить привязку. Мы можем решить эту проблему с помощью compareWith (документов) следующим образом:

<mat-select [compareWith]="compareWithFn" placeholder="Multiclassement" 
            [(ngModel)]="classe.multiclassement" multiple>

и ТС:

compareWithFn(item1, item2) {
  return item1 && item2 ? item1.nom === item2.nom : item1 === item2;
}

DEMO

person AJT82    schedule 12.11.2017
comment
Нет проблем, рад, что смог помочь! :) - person AJT82; 16.11.2017