Chciałbym powiązać element select z listą obiektów - co jest dość łatwe:
@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;
}
W tym przypadku wydaje się, że selectedValue
byłaby to liczba - identyfikator wybranego elementu.
Jednak tak naprawdę chciałbym powiązać z samym obiektem wiejskim, aby selectedValue
był to obiekt, a nie tylko identyfikator. Próbowałem zmienić wartość opcji tak:
<option *ngFor="#c of countries" value="c">{{c.name}}</option>
ale to nie wydaje się działać. Wydaje się, że umieszcza obiekt w moim selectedValue
- ale nie obiekt, którego oczekuję. Możesz to zobaczyć w moim przykładzie Plunkera .
Próbowałem również powiązać zdarzenie zmiany, aby samodzielnie ustawić obiekt na podstawie wybranego identyfikatora; wydaje się jednak, że zdarzenie zmiany jest uruchamiane przed zaktualizowaniem powiązanego modelu ngModel, co oznacza, że w tym momencie nie mam dostępu do nowo wybranej wartości.
Czy istnieje czysty sposób na powiązanie zaznaczonego elementu z obiektem za pomocą Angular 2?