Печать «[объект, объект]» означает, что вы пытаетесь использовать объект как строку.
toppings
- массив объектов. Вы просматриваете этот массив с помощью let topping of toppings
и назначаете объект topping
.
{{topping.value}}
печатает строку в свойстве .value
объекта topping, но вы вернули весь объект в [value]="topping"
.
Таким образом, selected
становится массивом объектов, хотя вы видите только строки при нажатии на параметры.
Два способа добиться желаемого;
- передать строку из опций
<mat-form-field>
<mat-label>Toppings</mat-label>
<mat-select [(value)]="selected" multiple>
<mat-option *ngFor="let topping of toppings" [value]="topping.value">{{topping.value}}</mat-option>
</mat-select>
</mat-form-field>
<p>You selected: {{selected}}</p>
- L oop через выбранный массив
<mat-form-field>
<mat-label>Toppings</mat-label>
<mat-select [(value)]="selected" multiple>
<mat-option *ngFor="let topping of toppings" [value]="topping">{{topping.value}}</mat-option>
</mat-select>
</mat-form-field>
<p>You selected:
<span *ngFor="let s of selected; let f = first; let l = last;">
{{s.value}}
<span *ngIf="!(f && l) && !l">,</span>
</span>
</p>
Надеюсь, это поможет вам уточнить angular создание шаблонов и привязка данных.