(change)
événement lié à l'événement de changement d'entrée classique.
https://developer.mozilla.org/en-US/docs/Web/Events/change
Vous pouvez utiliser (modifier) l'événement même si vous n'avez pas de modèle à votre entrée comme
<input (change)="somethingChanged()">
(ngModelChange)
est la @Output
directive de ngModel. Il se déclenche lorsque le modèle change. Vous ne pouvez pas utiliser cet événement sans la directive ngModel.
https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_model.ts#L124
Comme vous en découvrez plus dans le code source, (ngModelChange)
émet la nouvelle valeur.
https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_model.ts#L169
Cela signifie donc que vous avez la capacité d'une telle utilisation:
<input (ngModelChange)="modelChanged($event)">
modelChanged(newObj) {
// do something with new value
}
Fondamentalement, il semble qu'il n'y ait pas de grande différence entre deux, mais les ngModel
événements gagnent en puissance lorsque vous les utilisez [ngValue]
.
<select [(ngModel)]="data" (ngModelChange)="dataChanged($event)" name="data">
<option *ngFor="let currentData of allData" [ngValue]="currentData">
{{data.name}}
</option>
</select>
dataChanged(newObj) {
// here comes the object as parameter
}
supposons que vous essayez la même chose sans « ngModel
choses»
<select (change)="changed($event)">
<option *ngFor="let currentData of allData" [value]="currentData.id">
{{data.name}}
</option>
</select>
changed(e){
// event comes as parameter, you'll have to find selectedData manually
// by using e.target.data
}