(change)
sự kiện ràng buộc với sự kiện thay đổi đầu vào cổ điển.
https://developer.mozilla.org/en-US/docs/Web/Events/change
Bạn có thể sử dụng (thay đổi) sự kiện ngay cả khi bạn không có mô hình ở đầu vào của mình như
<input (change)="somethingChanged()">
(ngModelChange)
là @Output
chỉ thị của ngModel. Nó kích hoạt khi mô hình thay đổi. Bạn không thể sử dụng sự kiện này mà không có chỉ thị ngModel.
https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_model.ts#L124
Khi bạn khám phá thêm trong mã nguồn, (ngModelChange)
sẽ phát ra giá trị mới.
https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_model.ts#L169
Vì vậy, nó có nghĩa là bạn có khả năng sử dụng như vậy:
<input (ngModelChange)="modelChanged($event)">
modelChanged(newObj) {
// do something with new value
}
Về cơ bản, có vẻ như không có sự khác biệt lớn giữa hai, nhưng ngModel
các sự kiện đạt được sức mạnh khi bạn sử dụng [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
}
giả sử bạn thử điều tương tự mà không có " ngModel
điều"
<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
}