Почему <lightning-input-field> не устанавливает значения флажков в LWC?
Я получаю данные в свой LWC из класса-оболочки. В этих данных я получаю имя API объекта, имя API поля и значение, представленное в поле в виде строк. Я перебираю данные из класса-оболочки и получаю ввод от пользователя, используя lightning-input-field
.
Код:
<!-- 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>
filterValue
Поставляется в формате String. Этот код работает для всех полей, кроме флажков. Несмотря на то, что он filterValue
содержит true
или false
, это не отражается на флажке в пользовательском интерфейсе. По умолчанию флажок отображается в пользовательском интерфейсе независимо от значения, представленного в filterValue
.
Это означает, что флажок не получает значение из value
атрибута lightning-input-field
. Кроме того, в пользовательском интерфейсе по умолчанию всегда отображается флажок. Я хочу, чтобы по умолчанию он не отмечен. Я не могу понять, почему это происходит.
Это потому, что filterValue
это строка? - Мне нужно, чтобы это была строка, потому что все другие поля используют ее.
Или это потому, что я использую value
атрибут вместо checked
атрибута? - У меня ошибка, что такого checked
атрибута нет.
Пожалуйста помоги. Спасибо! 😄
Ответы
Вероятно, из-за правил преобразования типов в JavaScript; строка преобразуется в логическое значение следующим образом:
- строка, которая не определена, равна нулю или пуста (т.е. "") становится
false
- строка, которая не соответствует ни одному из вышеперечисленных, становится
true
Таким образом, строки «истина» и «ложь» становятся true
логическими. Вам необходимо изменить способ создания или использования вашего filterValue для решения этой проблемы. Например, убедитесь, что для filterValue установлено значение null для false и «true» в противном случае.