Angular 2的大多数选择/选项解决方案都以我们返回实际内容的方式工作,而不是value
属性。但是,由于我仍然在学习Angular 2,我想在点击按钮时获得实际的value
属性。我设法解决了这个问题,但我不确定这是否是正确的方法。 下面是我想它是如何工作的例子:Angular 2 - 如何从选择/选项中获取价值
<select #selectedCategory>
<option *ngFor="#category of categories" [value]="category.id">{{category.name}}</option>
</select>
<button (click)="getValueFromSelect(selectedCategory.value)">
/* This returns the selected category.name, not the value attribute. */
上述解决方案将创建下列HTML(注意option
缺乏value
属性):
<select _ngcontent-oom-3="">
<!--template bindings={}-->
<option _ngcontent-oom-3="">stuff 1</option>
<option _ngcontent-oom-3="">stuff 2</option>
<option _ngcontent-oom-3="">stuff 3</option>
</select>
下面的解决方案实际上工作,但是,我需要一个ngModel
为了使其工作。
<select [(ngModel)]="selectedCategory">
<option *ngFor="#category of categories" [value]="category.id">{{category.name}}</option>
</select>
<button (click)="getValueFromSelect(selectedCategory.value)">
/* This returns the value attribute correctly; however, do I really need a ngModel for one value? */
解决这种情况的正确方法是什么?
谢谢您的建议。
你的“我怎么喜欢它的工作”的例子工作:[plunker](https://plnkr.co/edit/NZc3RWgERx2t2m1HWmCb?p=preview)。它返回分配给所选选项的'value'属性的'category.id'。我喜欢这种方法,因为它不会将属性添加到组件。 –
这真的很奇怪,在我的例子中,当我检查select/option元素时,我没有'value'属性。我基本上复制/粘贴你的例子 - 如果你检查元素,在你的榨取器中,每个选项都有一个'value'属性,而我的不是。我将使用生成的HTML更新我的原始问题。 – uglycode
您使用的是哪个版本的Angular beta?你有没有加载其他库? –