我使用的是Angular 2(打字脚本).

我想对新的 Select 做些什么,但我在onChange()中得到的总是最后的 Select .我怎样才能得到新的 Select ?

<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 with the new selectedDevice, but what I
    // get here is always the last selection, not the one I just selected.
}

推荐答案

如果不需要双向数据绑定:

<select (change)="onChange($event.target.value)">
    <option *ngFor="let i of devices">{{i}}</option>
</select>

onChange(deviceValue) {
    console.log(deviceValue);
}

对于双向数据绑定,请将事件绑定和属性绑定分开:

<select [ngModel]="selectedDevice" (ngModelChange)="onChange($event)" name="sel2">
    <option [value]="i" *ngFor="let i of devices">{{i}}</option>
</select>
export class AppComponent {
  devices = 'one two three'.split(' ');
  selectedDevice = 'two';
  onChange(newValue) {
    console.log(newValue);
    this.selectedDevice = newValue;
    // ... do other stuff here ...
}

如果devices是对象数组,则绑定到ngValue而不是value:

<select [ngModel]="selectedDeviceObj" (ngModelChange)="onChangeObj($event)" name="sel3">
  <option [ngValue]="i" *ngFor="let i of deviceObjects">{{i.name}}</option>
</select>
{{selectedDeviceObj | json}}
export class AppComponent {
  deviceObjects = [{name: 1}, {name: 2}, {name: 3}];
  selectedDeviceObj = this.deviceObjects[1];
  onChangeObj(newObj) {
    console.log(newObj);
    this.selectedDeviceObj = newObj;
    // ... do other stuff here ...
  }
}

Plunker - does not use <form>
Plunker - uses <form> and uses the new forms API

Typescript相关问答推荐

无法从应用程序内的库导入组件NX Expo React Native

Angular 17 -如何使用新的@if语法在对象中使用Deliverc值

当使用`type B = A`时,B的类型显示为A.为什么当`type B = A时显示为`any `|用A代替?

如何在TypeScrip中从字符串联合类型中省略%1值

我可以为情态车使用棱角形的路由守卫吗?

如何在Angular 12中创建DisplayBlock组件?

匿名静态类推断组成不正确推断

在类型脚本中的泛型类上扩展的可选参数

TypeScrip界面属性依赖于以前的属性-针对多种可能情况的简明解决方案

嵌套对象的类型

刷新时保持当前名称的Angular

如何缩小函数的返回类型?

跟踪深度路径时按条件提取嵌套类型

如何获取受类型脚本泛型约束的有效输入参数

在类型脚本中将泛型字符串数组转换为字符串字母并集

为什么Typescript只在调用方提供显式泛型类型参数时推断此函数的返回类型?

创建一个TypeScrip对象并基于来自输入对象的约束定义其类型

具有匹配功能的TS通用事件处理程序

如何静态键入返回数组1到n的函数

带有';的类型脚本嵌套对象可选属性错误满足';