我试图发现一个变化ngModel
的<select>
标签。在Angular 1.x中,我们可以使用$watch
on ngModel
或使用来解决此问题ngChange
,但我尚未了解如何检测ngModel
Angular 2中的更改。
完整示例: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
更改以及视图中的插值表达式都会反映出这一点。
我如何在班级/控制器中收到有关此更改的通知?
1
您可能希望保留一些额外的注释;您不希望这个问题被伪装成骚人。 stackoverflow.com/help/dont-ask。
—
Claies 2015年