【发布时间】:2016-06-26 23:31:53
【问题描述】:
我想将一个选择元素绑定到一个对象列表——这很简单:
@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 似乎是一个数字——所选项目的 ID。
但是,我实际上想绑定到 country 对象本身,以便 selectedValue 成为对象而不仅仅是 id。我尝试像这样更改选项的值:
<option *ngFor="#c of countries" value="c">{{c.name}}</option>
但这似乎不起作用。它似乎在我的selectedValue 中放置了一个对象——但不是我期望的对象。你可以see this in my Plunker example。
我还尝试绑定到更改事件,以便我可以根据选定的 id 自己设置对象;但是,似乎 change 事件在绑定的 ngModel 更新之前触发——这意味着我当时无权访问新选择的值。
有没有一种干净的方法可以使用 Angular 2 将选择元素绑定到对象?
【问题讨论】:
-
刚刚意识到我的 Plunk 在 IE 和 Chrome 中的工作方式略有不同。两者都没有真正按照我想要的方式工作,但仅供参考。