Я хотел бы привязать элемент 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?