J'essaie de détecter un changement ngModeldans une <select>balise. Dans Angular 1.x, nous pourrions résoudre ce problème avec un $watchon ngModelou en utilisant ngChange, mais je n'ai pas encore compris comment détecter un changement ngModeldans Angular 2.
Exemple complet : 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);
}
}
Comme nous pouvons le voir, si nous sélectionnons une valeur différente dans la liste déroulante, nos ngModelmodifications et l'expression interpolée dans la vue le reflètent.
Comment être informé de ce changement dans ma classe / mon contrôleur?