Je voudrais lier un élément select à une liste d'objets - ce qui est assez simple:
@Component({
selector: 'myApp',
template: `<h1>My Application</h1>
<select [(ngModel)]="selectedValue">
<option *ngFor="#c of countries" value="c.id">{{c.name}}</option>
</select>`
})
export class AppComponent{
countries = [
{id: 1, name: "United States"},
{id: 2, name: "Australia"}
{id: 3, name: "Canada"},
{id: 4, name: "Brazil"},
{id: 5, name: "England"}
];
selectedValue = null;
}
Dans ce cas, il semble que ce selectedValue
serait un nombre - l'id de l'élément sélectionné.
Cependant, j'aimerais en fait me lier à l'objet pays lui-même afin que ce selectedValue
soit l'objet plutôt que juste l'id. J'ai essayé de changer la valeur de l'option comme ceci:
<option *ngFor="#c of countries" value="c">{{c.name}}</option>
mais cela ne semble pas fonctionner. Il semble placer un objet dans mon selectedValue
- mais pas l'objet que j'attends. Vous pouvez le voir dans mon exemple Plunker .
J'ai également essayé de me lier à l'événement change afin de pouvoir définir l'objet moi-même en fonction de l'ID sélectionné; cependant, il semble que l'événement change se déclenche avant la mise à jour du ngModel lié - ce qui signifie que je n'ai pas accès à la nouvelle valeur sélectionnée à ce stade.
Existe-t-il un moyen propre de lier un élément de sélection à un objet avec Angular 2?