Saya ingin menggunakan tombol radio dalam bentuk menggunakan Angular 2
Options : <br/>
1 : <input name="options" ng-control="options" type="radio" value="1" [(ng-model)]="model.options" ><br/>
2 : <input name="options" ng-control="options" type="radio" value="2" [(ng-model)]="model.options" ><br/>
model.options nilai awal adalah 1
ketika halaman dimuat, tombol radio pertama tidak dicentang dan modifikasi tidak terikat pada model
Ada ide ?
forms
radio-button
angular
Mourad Zouabi
sumber
sumber
Jawaban:
gunakan [value] = "1" alih-alih value = "1"
Edit:
Seperti yang disarankan oleh thllbrg "Untuk penggunaan angular 2.1+,
[(ngModel)]
bukan[(ng-model)]
"sumber
[(ngModel)]
bukan[(ng-model)]
. Baca lagi .value="1" [(ngModel)]="model.options"
. Menutupvalue
tanda kurung siku tidak berfungsiCatatan - pengikatan tombol radio sekarang menjadi fitur yang didukung di RC4 dan seterusnya - lihat jawaban ini
Contoh tombol radio menggunakan RadioControlValueAccessor khusus yang mirip dengan CheckboxControlValueAccessor ( Diperbarui dengan Angular 2 rc-1 )
App.ts
template.html
radio_value_accessor.ts
Sumber: https://github.com/angular2-school/angular2-radio-button
Demo langsung Plunker: http://plnkr.co/edit/aggee6An1iHfwsqGoE3q?p=preview
sumber
this._renderer.setElementProperty(this._elementRef.nativeElement, 'checked', value == this._elementRef.nativeElement.value);
Solusi manual saya, yang melibatkan pembaruan secara manual
model.options
ketika tombol radio baru dipilih:Ini Plunkermenunjukkan hal di atas, serta cara menggunakan tombol untuk mengubah tombol radio yang dipilih - yaitu, untuk membuktikan bahwa pengikatan data adalah dua arah:
sumber
get debug()
fungsi apaget
kepanjangannya? kedua adalah: apakah ada alternatif seperti ini untuk kotak centang? berikan juga beberapa kode untuk kotak centang. terima kasih +1 untuk jawaban yang bagus.get
adalah fitur aksesor TypeScript . Posting pertanyaan untuk kotak centang.Anotherdate('2015-05-18T02:30:56')
tidak akan berfungsi. Setter dipanggil saat Anda mencoba menetapkan nilai ke properti. Di plunker saya, saya membuatsetDate()
fungsi untuk \ hat menerima nilai tanggal baru, yang kemudian ditetapkan keAnotherdate
. Tugas itu secara otomatis akan memanggil penyetel.{{}}
binding dievaluasi ulang setiap siklus deteksi perubahan. Saya menerapkanngDoCheck()
di AppComponent di plunker untuk menghitung siklus deteksi perubahan. Dari situ kita melihat bahwa deteksi perubahan dipanggil 3 kali. Dalam mode dev, binding diperiksa dua kali , karenanya menjadi 6 kali.Berikut adalah cara terbaik untuk menggunakan tombol radio di Angular2. Tidak perlu menggunakan event (click) atau RadioControlValueAccessor untuk mengubah nilai properti terikat, pengaturan properti [diperiksa] melakukan triknya.
Saya menerbitkan contoh penggunaan tombol radio: Sudut 2: bagaimana membuat tombol radio dari enum dan menambahkan penjilidan dua arah? Ia bekerja dari setidaknya Angular 2 RC5.
sumber
Masalah ini diselesaikan dalam versi Angular 2.0.0-rc.4, masing-masing dalam bentuk.
Sertakan
"@angular/forms": "0.2.0"
dalam package.json.Kemudian perpanjang bootstrap Anda di main. Bagian yang relevan:
Saya memiliki ini dalam .html dan bekerja dengan sempurna: nilai: {{buildTool}}
sumber
disableDeprecatedForms
danprovideForms
terlihat ajaib dan tidak masuk akal. Apa yang dilakukan benda-benda ini? Ini adalah kode tidak terbaca yang berlebihan yang membuat hal-hal yang tidak dapat diprediksi dari skala yang tidak diketahui.Saya sedang mencari metode yang tepat untuk menangani tombol radio tersebut, berikut adalah contoh solusi yang saya temukan di sini:
Perhatikan onSelectionChange yang meneruskan elemen saat ini ke metode.
sumber
Masukan radio sepertinya belum didukung. Harus ada nilai masukan radio accessor (mirip dengan kotak centang ini satu , di mana ia menetapkan 'diperiksa' attr di sini ) tapi aku tidak menemukan apapun. Jadi saya menerapkan satu; Anda bisa memeriksanya di sini .
sumber
[value] = "item" using * ngFor juga bekerja dengan Bentuk Reaktif di Angular 2 dan 4
sumber
Hal berikut memperbaiki masalah saya, harap pertimbangkan untuk menambahkan input radio di dalam
form
tag dan menggunakan[value]
tag untuk menampilkan nilainya.sumber
Inilah solusi yang berhasil untuk saya. Ini melibatkan pengikatan tombol radio - tetapi tidak mengikat ke data bisnis, melainkan, mengikat ke status tombol radio. Ini mungkin BUKAN solusi terbaik untuk proyek baru, tetapi sesuai untuk proyek saya. Proyek saya memiliki banyak sekali kode yang ada yang ditulis dalam teknologi berbeda yang saya porting ke Angular. Kode lama mengikuti pola di mana kode sangat tertarik untuk memeriksa setiap tombol radio untuk melihat apakah itu yang dipilih. Solusinya adalah variasi dari solusi handler klik, beberapa di antaranya telah disebutkan di Stack Overflow. Nilai tambah dari solusi ini mungkin:
Solusi ini melibatkan
Contoh:
...
...
Saat pengguna mengklik tombol radio, metode selectButton dari kelas helper akan dipanggil. Ini melewati model untuk tombol radio yang diklik. Kelas helper menyetel bidang boolean "terpilih" dari model yang diteruskan ke true, dan menyetel bidang "terpilih" dari semua model tombol radio lainnya ke salah.
Selama inisialisasi, komponen harus membuat turunan kelas helper dengan daftar semua model tombol radio dalam grup. Dalam contoh, "radioButtonGroupList" akan menjadi turunan dari kelas helper yang kodenya adalah:
sumber
Contoh Daftar Radio Angular 8:
Tautan Sumber
Tanggapan JSON
Template HTML
sumber
Solusi dan solusi paling sederhana:
sumber
Saya telah membuat versi dengan hanya menggunakan event klik pada elemen yang dimuat dan meneruskan nilai seleksi ke dalam fungsi "getSelection" dan memperbarui model.
Di template Anda:
Kelas Anda:
Lihat contoh: https://plnkr.co/edit/2Muje8yvWZVL9OXqG0pW?p=info
sumber
Jawaban ini mungkin bukan yang terbaik tergantung pada kasus penggunaan Anda, namun berhasil. Alih-alih menggunakan tombol Radio untuk pilihan Pria dan Wanita, menggunakan
<select> </select>
karya dengan sempurna, baik untuk menyimpan dan mengedit.Di atas seharusnya baik-baik saja, untuk mengedit menggunakan FormGroup dengan
patchValue
. Untuk menciptakan, Anda bisa menggunakan[(ngModel)]
bukanformControlName
. Masih berfungsi.Pekerjaan pipa yang terlibat dengan tombol radio, saya memilih untuk memilih sebagai gantinya. Secara visual dan UX, tampaknya ini bukan yang terbaik, tetapi dari sudut pandang pengembang, ini jauh lebih mudah.
sumber
Pada perubahan tombol Radio dapatkan nilai dari masing-masing tombol dengan garis-garis ini
https://stackblitz.com/edit/angular-jpo2dm?embed=1&file=src/app/app.component.html
sumber
Berikut adalah beberapa kode yang saya gunakan yang berfungsi dengan Angular 7
(Catatan: Dulu saya terkadang menggunakan info yang diberikan oleh jawaban Anthony Brenelière, yang sangat saya hargai. Tapi, setidaknya untuk Angular 7, bagian ini:
Saya merasa tidak perlu.)
Solusi saya di sini memiliki tiga keuntungan:
Contoh HTML:
Contoh TypeScript:
Dua kelas digunakan:
Kelas Grup Tombol Radio:
Kelas Tombol Radio
sumber
Ini mungkin bukan solusi yang tepat tetapi yang ini juga merupakan pilihan yang berharap ini akan membantu seseorang.
Sampai sekarang saya sudah mendapatkan nilai radioButtons menggunakan metode (klik) seperti berikut:
dan dalam file .ts saya telah menetapkan nilai variabel standar untuk mendapatkan nilai
onChange
fungsi.Tetapi setelah mencari saya menemukan metode yang bagus saya belum mencoba tetapi tampaknya yang ini bagus menggunakan
[(ng-model)]
tautan di sini untuk github di sini . ini digunakanRadioControlValueAccessor
untuk radio dan juga kotak centang. berikut adalah cara kerja # plnkr # untuk metode ini di sini .sumber