Я думаю, это потому, что вы используете 2 экземпляра {id: 1, name: "Extra cheese"}.
Итак, вы должны делать то, что хотите:
- вы используете тот же экземпляр вашего объекта, примерно так:
myExtraCheeseObject = { id: 1, name: "Extra cheese" };
// Initialize formControl value
toppingsControl = new FormControl([myExtraCheeseObject]);
constructor() {
setTimeout(() => {
this.test.next([
myExtraCheeseObject,
{ id: 2, name: "Mushroom" }
]);
}, 5000);
}
// just compare ids
compareObjects(o1: any, o2: any) {
return o1.id == o2.id
}
// compare id and name
compareObjects(o1: any, o2: any) {
return o1.id == o2.id && o1.name == o2.name
}
<mat-select [formControl]="toppingsControl"
[compareWith]="compareObjects"
multiple>
</mat-select>
(еще один совет: вам следует избегать использования setTimeout и кода в конструкторе, вместо этого используйте ngOnInit)