(change)
เหตุการณ์ที่ถูกผูกไว้กับเหตุการณ์การเปลี่ยนแปลงอินพุตคลาสสิก
https://developer.mozilla.org/en-US/docs/Web/Events/change
คุณสามารถใช้ (เปลี่ยน) เหตุการณ์แม้ว่าคุณจะไม่มีโมเดลที่อินพุตของคุณเป็น
<input (change)="somethingChanged()">
(ngModelChange)
เป็น@Output
คำสั่งของ ngModel มันจะยิงเมื่อโมเดลเปลี่ยน คุณไม่สามารถใช้เหตุการณ์นี้โดยไม่มีคำสั่ง ngModel
https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_model.ts#L124
เมื่อคุณค้นพบมากขึ้นในซอร์สโค้ดให้(ngModelChange)
ปล่อยค่าใหม่
https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_model.ts#L169
ดังนั้นหมายความว่าคุณมีความสามารถในการใช้งานดังกล่าว:
<input (ngModelChange)="modelChanged($event)">
modelChanged(newObj) {
// do something with new value
}
โดยทั่วไปก็ดูเหมือนว่าไม่มีความแตกต่างใหญ่ระหว่างสอง แต่เหตุการณ์ที่เกิดขึ้นได้รับอำนาจเมื่อคุณใช้ngModel
[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
}
สมมติว่าคุณลองสิ่งเดียวกันโดยไม่มี " ngModel
สิ่ง"
<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
}