Mengapa <lightning-input-field> tidak menyetel nilai kotak centang di LWC?

Aug 17 2020

Saya mendapatkan data di LWC saya dari kelas pembungkus. Dalam data tersebut, saya mendapatkan nama API objek, nama dan nilai API bidang yang ada di bidang dalam bentuk String. Saya mengulang data dari kelas pembungkus dan mengambil masukan dari pengguna menggunakan lightning-input-field.

Kode:

<!-- iterate over wrapper list -->
<template iterator:item={wrapperListCopy}>
     <tr key={item.value.index}>
           <td>
                <lightning-record-edit-form object-api-name={objectApiName}>
                     <lightning-input-field id={item.value.index} 
                                            field-name={item.value.inputFieldName} 
                                            value={item.value.filterValue}>
                     </lightning-input-field>
                </lightning-record-edit-form>
           </td>
     </tr>
</template>

The filterValuedatang dalam format String. Kode ini berfungsi untuk semua bidang kecuali kotak centang. Meskipun filterValueberisi trueatau false, hal yang sama tidak tercermin pada kotak centang di UI. Secara default, kotak centang muncul dicentang di UI terlepas dari nilai yang ada di filterValue.

Artinya kotak centang tidak mendapatkan nilai dari valueatribut lightning-input-field. Selain itu, kotak centang selalu muncul dicentang secara default di UI. Saya ingin ini tidak dicentang secara default. Saya tidak dapat memahami mengapa ini terjadi.

Apakah karena filterValueitu String? - Saya membutuhkannya sebagai string karena semua bidang lain menggunakannya.

Atau karena saya menggunakan valueatribut, bukan checkedatribut? - Saya mendapat kesalahan yang mengatakan bahwa tidak ada checkedatribut seperti itu .

Tolong bantu. Terima kasih! 😄

Jawaban

4 PhilW Aug 17 2020 at 20:59

Mungkin karena aturan konversi jenis JavaScript; string diubah menjadi Boolean dengan cara berikut:

  • string yang tidak ditentukan, null atau kosong (yaitu "") menjadi false
  • string yang tidak satu pun di atas menjadi true

Jadi, string "true" dan "false" keduanya menjadi trueBoolean. Anda perlu mengubah cara filterValue dibuat atau digunakan untuk menyelesaikan masalah ini. Misalnya, pastikan filterValue disetel ke null untuk false dan "true" jika tidak.