Vorrei associare un elemento selezionato a un elenco di oggetti, il che è abbastanza semplice:
@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;
}
In questo caso, sembra che selectedValue
sarebbe un numero - l'id dell'elemento selezionato.
Tuttavia, in realtà mi piacerebbe legare l'oggetto paese stesso in modo che selectedValue
sia l'oggetto piuttosto che solo l'id. Ho provato a modificare il valore dell'opzione in questo modo:
<option *ngFor="#c of countries" value="c">{{c.name}}</option>
ma questo non sembra funzionare. Sembra posizionare un oggetto nel mio selectedValue
- ma non l'oggetto che mi aspetto. Puoi vederlo nel mio esempio di Plunker .
Ho anche provato ad associare l'evento change in modo da poter impostare l'oggetto da solo in base all'ID selezionato; tuttavia, sembra che l'evento change si attivi prima che venga aggiornato ngModel, il che significa che non ho accesso al nuovo valore selezionato in quel punto.
Esiste un modo semplice per associare un elemento select a un oggetto con Angular 2?