LWC에서 <lightning-input-field>가 체크 박스 값을 설정하지 않는 이유는 무엇입니까?
래퍼 클래스에서 내 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
문자열 형식으로 제공됩니다. 이 코드는 확인란을 제외한 모든 필드에서 작동합니다. 비록 filterValue
이 들어 true
나 false
같은이 UI에서 체크 박스에 반영되지 않습니다. 기본적으로 확인란은에있는 값에 관계없이 UI에서 선택된 상태로 표시됩니다 filterValue
.
확인란이의 value
속성 에서 값을 가져 오지 않음을 의미합니다 lightning-input-field
. 또한 확인란은 항상 UI에서 기본적으로 선택되어 표시됩니다. 기본적으로 선택 취소하고 싶습니다. 왜 이런 일이 일어나는지 이해할 수 없습니다.
filterValue
문자열 이기 때문 입니까? -다른 모든 필드에서 사용하기 때문에 문자열이어야합니다.
아니면 value
속성 대신 속성을 사용하기 때문 checked
입니까? -해당 checked
속성 이 없다는 오류가 발생했습니다 .
도와주세요. 감사합니다! 😄
답변
아마도 JavaScript의 유형 변환 규칙 때문일 것입니다. 문자열은 다음과 같은 방식으로 부울로 변환됩니다.
- 정의되지 않았거나 null이거나 비어있는 (예 : "") 문자열은
false
- 위의 어느 것도 아닌 문자열은
true
따라서 "true"및 "false"문자열은 모두 true
부울이됩니다. 이 문제를 해결하기 위해 filterValue가 생성되거나 사용되는 방식을 변경해야합니다. 예를 들어, filterValue가 false이면 null로 설정되고 그렇지 않으면 "true"로 설정되어 있는지 확인합니다.