Me gustaría vincular un elemento select a una lista de objetos, lo cual es bastante fácil:
@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;
}
En este caso, parece que selectedValue
sería un número: la identificación del elemento seleccionado.
Sin embargo, en realidad me gustaría unirme al objeto del país en sí, de modo que ese selectedValue
sea el objeto en lugar de solo la identificación. Intenté cambiar el valor de la opción así:
<option *ngFor="#c of countries" value="c">{{c.name}}</option>
Pero esto no parece funcionar. Parece colocar un objeto en mi selectedValue
, pero no el objeto que estoy esperando. Puedes ver esto en mi ejemplo Plunker .
También intenté vincular el evento de cambio para poder configurar el objeto yo mismo en función de la identificación seleccionada; sin embargo, parece que el evento de cambio se dispara antes de que se actualice el ngModel vinculado, lo que significa que no tengo acceso al valor recientemente seleccionado en ese punto.
¿Hay una manera limpia de vincular un elemento seleccionado a un objeto con Angular 2?