2017-06-16 1 views
0

J'essaie de transmettre un objet, plutôt qu'une chaîne, à partir d'un événement de modification md-select. Cela fonctionne très bien, mais je suis incapable de présélectionner une valeur de la charge:Définir la valeur par défaut sur md-select Lorsque la valeur est un objet Angular4 Angular-Material

<md-select 
    [(ngModel)]="selectedValue" 
    name="food" 
    (change)="onSelectionChange($event)" 
> 
    <md-option *ngFor="let food of foods" [value]="food"> 
    {{food.viewValue}} 
    </md-option> 
</md-select> 

Cela ne fonctionne pas:

selectedValue: {value: 'steak-0', viewValue: 'Steak'}; 
[(ngModel)]="selectedValue" 

ne le fait:

selectedValue:'steak-0'; 
[(ngModel)]="selectedValue.value" 

Y at-il un manière de présélectionner une valeur sur load, quand value est un objet? On dirait un cas d'utilisation commun.

https://plnkr.co/edit/IkAnPj4ABsWOM4mpqqK4?p=preview

+0

'ngModel' est un outil intelligent, mais vous ne l'utilisez pas droit? –

Répondre

1

Si vous traitez avec la valeur de l'objet, vous devez sélectionner la même référence d'objet. Ainsi, vous pouvez le faire comme suit:

foods = [ 
    {value: 'steak-0', viewValue: 'Steak'}, 
    {value: 'pizza-1', viewValue: 'Pizza'}, 
    {value: 'tacos-2', viewValue: 'Tacos'} 
]; 

selectedValue = this.foods[0]; 

Fixed Plunker