Saya menggunakan Angular 2 (TypeScript).
Saya ingin melakukan sesuatu dengan pilihan baru, tetapi apa yang saya dapatkan onChange()
selalu merupakan pilihan terakhir. Bagaimana saya bisa mendapatkan pilihan baru?
<select [(ngModel)]="selectedDevice" (change)="onChange($event)">
<option *ngFor="#i of devices">{{i}}</option>
</select>
onChange($event) {
console.log(this.selectedDevice);
// I want to do something here with the new selectedDevice, but what I
// get here is always the last selection, not the one I just selected.
}
angular
typescript
Hongbo Miao
sumber
sumber
selectedDevice
ketika pengguna memilih item yang berbeda, dan 2) jika kita menetapkan nilaiselectedDevice
, NgModel akan secara otomatis memperbarui tampilan. Karena kami juga ingin diberitahu tentang perubahan, saya menambahkan(change)
acara tersebut mengikat. Kita seharusnya tidak harus melakukannya dengan cara ini ... kita harus dapat memecah data dua arah yang mengikat[ngModel]="selectedDevice" and (ngModelChange)="onChange($event)"
, tetapi ketika saya tahu,onChange()
dipanggil dua kali untuk setiap daftar pilih mengubah cara itu.<option *ngFor="#course of course_array #i=index" #newone value={{course.id}} >{{course.course_name}}</option>
course.course_name
dancourse.id
keduanya bagaimana saya bisa mengirim keduanya melalui fungsi (perubahan)?$event
variabel / simbol khusus adalah bagian dari "konteks pernyataan" yang dimiliki oleh pernyataan template Angular. Jika sebaliknya saya menulis(ngModelChange)="onChange('abc')"
makanewValue
akan mendapatkan stringabc
. Itu hanya panggilan fungsi JavaScript normal.Anda dapat meneruskan nilai kembali ke komponen dengan membuat variabel referensi pada tag pilih
#device
dan meneruskannya ke penangan perubahanonChange($event, device.value)
harus memiliki nilai barusumber
ngModel
sini, Anda mengikat ke variabel baru yang disebutdevice
.[(ngModel)]
hereCukup gunakan [ngValue] alih-alih [nilai] !!
sumber
(change)="selectOrg(selectedOrg)"
memanggil fungsi selectOrg dengan pilihan saat ini / sebelumnya, bukan pilihan yang baru dipilih. Saya menemukan, saya bahkan tidak membutuhkannya(change)
.Saya mengalami masalah ini saat melakukan tutorial Angular 2 form (versi TypeScript) di https://angular.io/docs/ts/latest/guide/forms.html
Blok pilih / opsi tidak memungkinkan nilai seleksi diubah dengan memilih salah satu opsi.
Melakukan apa yang disarankan Mark Rajcok berhasil, meskipun saya bertanya-tanya apakah ada sesuatu yang saya lewatkan dalam tutorial asli atau jika ada pembaruan. Bagaimanapun, menambahkan
ke hero-form.component.ts di kelas HeroFormComponent
dan
to hero-form.component.html pada
<select>
elemen yang membuatnya berfungsisumber
gunakan selectionChange di sudut 6 dan di atas. contoh
(selectionChange)= onChange($event.value)
sumber
Pilihan lain adalah menyimpan objek dalam nilai sebagai string:
komponen:
Ini adalah satu-satunya cara saya bisa mendapatkan dua cara mengikat untuk mengatur nilai pilih pada pemuatan halaman. Ini karena daftar saya yang mengisi kotak pilih bukan objek yang sama persis seperti yang saya pilih terikat dan perlu objek yang sama, bukan hanya nilai properti yang sama.
sumber
Saya menggunakan ini untuk dropdown Material sudut. bekerja dengan baik
sumber
ionic 3.2.0 terbaru telah dimodifikasi (ubah) menjadi (ionChange)
misal: HTML
TS
sumber
7/8 sudut
Pada sudut 6, penggunaan properti input ngModel dengan arahan bentuk reaktif telah ditinggalkan dan dihapus sama sekali dalam sudut 7+. Baca dokumen resmi di sini.
Menggunakan pendekatan formulir reaktif Anda dapat / mengatur data yang dipilih sebagai;
sumber
Di Angular 5 saya lakukan dengan cara berikut. dapatkan objek $ event.value alih-alih $ event.target.value
sumber
Di Angular 8 Anda cukup menggunakan "selectionChange" seperti ini:
sumber