我正在使用Angular 2(TypeScript) .
我想为新的选择做点什么,但是我在onChange()中得到的东西总是最后选择 . 我怎样才能获得新的选择?
<select [(ngModel)]="selectedDevice" (change)="onChange($event)">
<option *ngFor="#i of devices">{{i}}</option>
</select>
onChange($event) {
console.log(this.selectedDevice);
// I want to do something here for new selectedDevice, but what I
// got here is always last selection, not the one I just select.
}
9 回答
我将此用于角度材料下拉列表 . 工作良好
如果您不需要双向数据绑定:
对于双向数据绑定,请分隔事件和属性绑定:
如果
devices
是对象数组,则绑定到ngValue
而不是value
:Plunker - 不使用
<form>
Plunker - 使用
<form>
并使用新的表单API最新离子3.2.0已修改(更改)为(ionChange)
例如:HTML
TS
您可以通过在select标记
#device
上创建引用变量并将其传递给更改处理程序onChange($event, device.value)
,将值传递回组件中在https://angular.io/docs/ts/latest/guide/forms.html执行Angular 2表单教程(TypeScript版本)时遇到了这个问题
选择/选项块不允许通过选择其中一个选项来更改选择的值 .
做Mark Markkok建议的工作,虽然我想知道在原始教程中是否遗漏了某些内容,或者是否有更新 . 在任何情况下,添加
到HeroFormComponent类中的hero-form.component.ts
和
到
<select>
元素中的hero-form.component.html使它工作使用angularChange在角度6及以上 . 示例
(selectionChange)= onChange($event.value)
Just use [ngValue] instead of [value]!!
另一种选择是将对象作为字符串存储在value中:
零件:
这是我可以获得双向绑定工作以在页面加载时设置选择值的唯一方法 . 这是因为我填充选择框的列表与我的select绑定的对象不完全相同,并且它需要是同一个对象,而不仅仅是相同的属性值 .
在 Angular 5 我用以下方式做了 . 获取对象 $event.value 而不是 $event.target.value