<lightning-input-field> LWC'deki onay kutularının değerini neden ayarlamıyor?

Aug 17 2020

Bir sarmalayıcı sınıfından LWC'mde veri alıyorum. Bu verilerde, nesnenin API adını, alan API adını ve alanda mevcut olan değeri Strings şeklinde alıyorum. Sarmalayıcı sınıfındaki verileri yineliyorum ve kullanarak kullanıcıdan girdi alıyorum lightning-input-field.

Kod:

<!-- 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>

filterValueDize biçiminde gelir. Bu kod, onay kutuları dışındaki tüm alanlar için çalışır. Veya filterValueiçerse bile , aynı şey kullanıcı arayüzündeki onay kutusuna yansıtılmaz. Varsayılan olarak, içinde bulunan değere bakılmaksızın kullanıcı arabiriminde onay kutusu işaretli olarak görünür .truefalsefilterValue

Bu, onay kutusunun valueözniteliğinden değer almadığı anlamına gelir lightning-input-field. Ayrıca, onay kutusu her zaman kullanıcı arayüzünde varsayılan olarak işaretli olarak görünür. Varsayılan olarak işaretlenmemiş olmasını istiyorum. Bunun neden olduğunu anlayamıyorum.

Bunun için mi filterValueString mi? - Dize olmasına ihtiyacım var çünkü diğer tüm alanlar onu kullanıyor.

Yoksa valueöznitelik yerine checkedöznitelik kullandığım için mi? - Böyle bir checkednitelik olmadığını söyleyen bir hata aldım .

Lütfen yardım et. Teşekkür ederim! 😄

Yanıtlar

4 PhilW Aug 17 2020 at 20:59

Muhtemelen JavaScript'in tür dönüştürme kuralları nedeniyle; bir dize aşağıdaki şekilde bir Boolean'a dönüştürülür:

  • tanımsız, boş veya boş (yani "") olan bir dize false
  • yukarıdakilerin hiçbiri olmayan bir dize olur true

Böylece, "true" ve "false" dizelerinin her ikisi truede bir Boolean haline gelir . Bunu çözmek için filterValue'nuzun oluşturulma veya kullanılma şeklini değiştirmeniz gerekir. Örneğin, filterValue öğesinin false için null olarak ve aksi takdirde "true" olarak ayarlandığından emin olun.