Angular 1 tidak menerima onchange()
acara, itu hanya menerima ng-change()
acara.
Sudut 2, di sisi lain, menerima keduanya (change)
dan (ngModelChange)
peristiwa, yang keduanya tampaknya melakukan hal yang sama.
Apa bedanya?
mana yang terbaik untuk kinerja?
ngModelChange :
<input type="text" pInputText class="ui-widget ui-text"
(ngModelChange)="clearFilter()" placeholder="Find"/>
vs perubahan :
<input type="text" pInputText class="ui-widget ui-text"
(change)="clearFilter()" placeholder="Find"/>
javascript
html
angular
typescript
angular-ngmodelchange
Ramesh Rajendran
sumber
sumber
Jawaban:
(change)
acara terikat ke acara perubahan input klasik.https://developer.mozilla.org/en-US/docs/Web/Events/change
Anda dapat menggunakan (mengubah) acara bahkan jika Anda tidak memiliki model di input Anda sebagai
(ngModelChange)
adalah@Output
arahan dari ngModel. Ini menyala ketika model berubah. Anda tidak dapat menggunakan acara ini tanpa arahan ngModel.https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_model.ts#L124
Ketika Anda menemukan lebih banyak di kode sumber,
(ngModelChange)
pindahkan nilai baru.https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_model.ts#L169
Jadi itu berarti Anda memiliki kemampuan penggunaan seperti itu:
Pada dasarnya, sepertinya tidak ada perbedaan besar di antara keduanya, tetapi
ngModel
acara mendapatkan kekuatan saat Anda menggunakannya[ngValue]
.menganggap Anda mencoba hal yang sama tanpa "
ngModel
benda"sumber
<input (ngModelChange)="modelChanged($event)">
tidak benar,[ngModel]
wajib.(change)
, dalam hal ini, Anda dapat melakukan(onClick)="yourFunction(youParameter)"
Dalam Angular 7,
(ngModelChange)="eventHandler()"
kehendak menyala sebelum nilai terikat[(ngModel)]="value"
berubah sementara(change)="eventHandler()"
kehendak api setelah nilai terikat[(ngModel)]="value"
diubah.sumber
ngModelChange
kebakaran setelah model tampilan diperbarui.(ngModelChange)
acara dipecat sebelum nilainya diubah dan(change)
setelah itu berubah. Terima kasih atas informasinya, sangat membantu!Seperti yang saya temukan dan tulis dalam topik lain - ini berlaku untuk angular <7 (tidak yakin bagaimana dengan 7+)
Hanya untuk masa depan
kita perlu untuk mengamati bahwa
[(ngModel)]="hero.name"
hanya jalan pintas yang dapat de-bergula ke:[ngModel]="hero.name" (ngModelChange)="hero.name = $event"
.Jadi jika kita menghapus kode gula, kita akan berakhir dengan:
<select (ngModelChange)="onModelChange()" [ngModel]="hero.name" (ngModelChange)="hero.name = $event">
atau
<[ngModel]="hero.name" (ngModelChange)="hero.name = $event" select (ngModelChange)="onModelChange()">
Jika Anda memeriksa kode di atas, Anda akan melihat bahwa kami berakhir dengan 2
ngModelChange
peristiwa dan yang perlu dijalankan dalam beberapa urutan.Kesimpulannya: Jika Anda menempatkan
ngModelChange
sebelumnyangModel
, Anda mendapatkan$event
sebagai nilai baru, tetapi objek model Anda masih memegang nilai sebelumnya. Jika Anda menempatkannya setelahnyangModel
, model tersebut sudah memiliki nilai baru.SUMBER
sumber
1 -
(change)
terikat ke acara pertukaran HTML. Dokumentasi tentang HTML onchange mengatakan sebagai berikut:Sumber: https://www.w3schools.com/jsref/event_onchange.asp
2 - Seperti yang dinyatakan sebelumnya,
(ngModelChange)
terikat ke variabel model yang diikat ke input Anda.Jadi, interpretasi saya adalah:
(change)
terpicu saat pengguna mengubah input(ngModelChange)
terpicu saat model berubah, apakah itu berurutan dengan tindakan pengguna atau tidaksumber