Gostaria de vincular um elemento select a uma lista de objetos - o que é 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;
}
Nesse caso, parece que selectedValue
seria um número - o ID do item selecionado.
No entanto, eu realmente gostaria de vincular ao próprio objeto do país, para que esse selectedValue
seja o objeto, e não apenas o ID. Tentei alterar o valor da opção da seguinte forma:
<option *ngFor="#c of countries" value="c">{{c.name}}</option>
mas isso não parece funcionar. Parece colocar um objeto no meu selectedValue
- mas não o objeto que estou esperando. Você pode ver isso no meu exemplo do Plunker .
Também tentei vincular o evento de alteração para poder definir o objeto com base no ID selecionado; no entanto, parece que o evento de alteração é acionado antes que o ngModel ligado seja atualizado - o que significa que não tenho acesso ao novo valor selecionado nesse momento.
Existe uma maneira limpa de vincular um elemento de seleção a um objeto com Angular 2?