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

  • Угловой 4
  • Угловой материал
  • Firebase (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>
8
DominikG 12 Ноя 2017 в 07:03

1 ответ

Лучший ответ

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

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

И TS:

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

ДЕМО

8
AJT82 12 Ноя 2017 в 07:55