(change)
Ereignis, das an das klassische Eingabeänderungsereignis gebunden ist.
https://developer.mozilla.org/en-US/docs/Web/Events/change
Sie können das Ereignis (Ändern) verwenden, auch wenn Sie kein Modell als Eingabe haben
<input (change)="somethingChanged()">
(ngModelChange)
ist die @Output
Direktive von ngModel. Es wird ausgelöst, wenn sich das Modell ändert. Sie können dieses Ereignis nicht ohne die Anweisung ngModel verwenden.
https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_model.ts#L124
Wenn Sie mehr im Quellcode entdecken, wird (ngModelChange)
der neue Wert ausgegeben.
https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_model.ts#L169
Es bedeutet also, dass Sie die Möglichkeit einer solchen Verwendung haben:
<input (ngModelChange)="modelChanged($event)">
modelChanged(newObj) {
// do something with new value
}
Grundsätzlich scheint es keinen großen Unterschied zwischen zwei zu geben, aber ngModel
Ereignisse gewinnen an Kraft, wenn Sie sie verwenden [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
}
Angenommen, Sie versuchen dasselbe ohne " ngModel
Dinge".
<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
}