J'essaie de détecter un changement ngModel
dans une <select>
balise. Dans Angular 1.x, nous pourrions résoudre ce problème avec un $watch
on ngModel
ou en utilisant ngChange
, mais je n'ai pas encore compris comment détecter un changement ngModel
dans 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 ngModel
modifications et l'expression interpolée dans la vue le reflètent.
Comment être informé de ce changement dans ma classe / mon contrôleur?