Я хотел бы привязать элемент select к списку объектов, что достаточно просто:
@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;
}
В этом случае кажется, что selectedValue
будет числом - идентификатором выбранного элемента.
Тем не менее, я бы на самом деле хотел привязать сам объект страны, чтобы selectedValue
был объектом, а не просто идентификатором. Я попытался изменить значение параметра следующим образом:
<option *ngFor="#c of countries" value="c">{{c.name}}</option>
но это не похоже на работу. Кажется, объект помещается в мой selectedValue
, но не тот объект, который я ожидаю. Вы можете увидеть это в моем примере с Plunker.
Я также попытался привязаться к событию изменения, чтобы я мог сам установить объект на основе выбранного идентификатора; однако, похоже, что событие изменения срабатывает до того, как обновляется привязанный ngModel - это означает, что у меня нет доступа к вновь выбранному значению в этот момент.
Есть ли чистый способ привязать выбранный элемент к объекту с Angular 2?