¿Por qué <lightning-input-field> no establece el valor de las casillas de verificación en LWC?
Obtengo datos en mi LWC de una clase contenedora. En esos datos, obtengo el nombre de la API del objeto, el nombre de la API del campo y el valor presente en el campo en forma de cadenas. Repito los datos de la clase contenedora y tomo la información del usuario que usa lightning-input-field
.
Código:
<!-- 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>
El filterValue
viene en formato de cadena. Este código funciona para todos los campos excepto las casillas de verificación. Aunque filterValue
contiene true
o false
, lo mismo no se refleja en la casilla de verificación en la interfaz de usuario. De forma predeterminada, la casilla de verificación aparece marcada en la interfaz de usuario independientemente del valor presente en filterValue
.
Significa que la casilla de verificación no obtiene valor del value
atributo de lightning-input-field
. Además, la casilla de verificación siempre aparece marcada de forma predeterminada en la interfaz de usuario. Quiero que esté desmarcado por defecto. No puedo entender por qué sucede esto.
¿Es porque filterValue
es una cadena? - Necesito que sea una cadena porque todos los demás campos la están usando.
¿O es porque uso value
atributo en lugar de checked
atributo? - Recibí un error que decía que no existe tal checked
atributo.
Por favor ayuda. ¡Gracias! 😄
Respuestas
Probablemente debido a las reglas de conversión de tipos de JavaScript; una cadena se convierte en un booleano de la siguiente manera:
- una cadena que no está definida, es nula o vacía (es decir, "") se convierte en
false
- una cadena que no es ninguna de las anteriores se convierte en
true
Por lo tanto, las cadenas "verdadero" y "falso" se vuelven true
booleanos. Debe cambiar la forma en que se genera o utiliza su filterValue para resolver esto. Por ejemplo, asegúrese de que filterValue esté establecido en null para false y "true" en caso contrario.