Saya perhatikan bahwa jika saya menonaktifkan kontrol pada bentuk reaktif Angular 2 maka kontrol tidak disertakan dalam form.value. Misalnya, jika saya mendefinisikan formulir saya seperti di bawah ini:
this.notelinkingForm = new FormGroup({
Enabled: new FormControl(settings.Enabled, Validators.required),
LinkToPreceeding: new FormControl({value: settings.LinkToPreceeding, disabled: !settings.Enabled}, Validators.required),
LinkingTolerance: new FormControl({value: settings.LinkingTolerance, disabled: !settings.Enabled}, Validators.required)
});
dan periksa this.notelinkingForm.value, jika semua kontrol diaktifkan maka outputnya adalah:
{"Enabled":true, "LinkToPreceeding": true, LinkingTolerance:"100"}
Namun, ketika beberapa kontrol dinonaktifkan, itu akan menjadi:
{"Enabled":true}
Perhatikan bagaimana kontrol yang dinonaktifkan dikecualikan.
Maksud saya adalah saat formulir berubah, saya ingin meneruskan form.value dengan semua properti di dalamnya ke API lainnya. Ini jelas tidak akan mungkin jika tidak berisi item yang dinonaktifkan.
Apakah saya melewatkan sesuatu di sini atau apakah ini perilaku yang diharapkan? Apakah ada cara untuk memberi tahu Angular agar menyertakan item yang dinonaktifkan di form.value?
Selamat datang di pikiran Anda.
sumber
readonly
dandisabled
. Tetapi ini tidak terjadi untuk misalnya kotak centang dan tombol radio seperti yang saya jelaskan dalam jawaban di bawah ini. Dalam kasus-kasus itu saya tidak suka bahwa saya harus mendapatkan data secara berbeda dan mengkodekan sesuatu secara khusus untuk kasus itu.Opsi lain yang saya gunakan adalah:
this.form.controls['LinkToPreceeding'].value;
sumber
Terima kasih @Sasxa karena telah memberikan saya 80% apa yang saya butuhkan.
Bagi Anda yang mencari solusi untuk masalah yang sama tetapi untuk formulir bersarang, saya dapat menyelesaikannya dengan mengubah biasanya
untuk
sumber
Jika Anda menggunakan
readonly
bukannyadisabled
itu masih tidak dapat diedit sementara data akan dimasukkan ke dalam formulir. Tetapi itu tidak mungkin dalam semua kasus. Misalnya, tidak tersedia untuk tombol radio dan kotak centang. Lihat dokumen web MDN . Dalam kasus tersebut, Anda harus mengajukan permohonan solusi lain yang disediakan di sini.sumber