【发布时间】:2016-03-28 02:17:23
【问题描述】:
我正在尝试在 <select> 标记中检测 ngModel 的更改。在 Angular 1.x 中,我们可能会在 ngModel 上使用 $watch 或使用 ngChange 来解决这个问题,但我还没有理解如何在 Angular 2 中检测到 ngModel 的更改。
完整示例:http://plnkr.co/edit/9c9oKH1tjDDb67zdKmr9?p=info
import {Component, View, Input, } from 'angular2/core';
import {FORM_DIRECTIVES} from 'angular2/common';
@Component({
selector: 'my-dropdown'
})
@View({
directives: [FORM_DIRECTIVES],
template: `
<select [ngModel]="selection" (ngModelChange)="onChange($event, selection)" >
<option *ngFor="#option of options">{{option}}</option>
</select>
{{selection}}
`
})
export class MyDropdown {
@Input() options;
selection = 'Dog';
ngOnInit() {
console.log('These were the options passed in: ' + this.options);
}
onChange(event) {
if (this.selection === event) return;
this.selection = event;
console.log(this.selection);
}
}
如我们所见,如果我们从下拉列表中选择不同的值,我们的ngModel 会发生变化,并且视图中的插值表达式会反映这一点。
如何在我的类/控制器中收到有关此更改的通知?
【问题讨论】:
-
您可能希望保留一些额外的 cmets;你不希望这个问题被标记为变相的咆哮。 stackoverflow.com/help/dont-ask.
标签: javascript angular