LWC में चेकबॉक्स का मान सेट नहीं करने पर <light-input-field> क्यों है?

Aug 17 2020

मुझे अपने 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, यूआई में चेकबॉक्स पर प्रतिबिंबित नहीं किया गया है। डिफ़ॉल्ट रूप से, चेकबॉक्स यूआई में मौजूद मूल्य के बावजूद चेक पर दिखाई देता है filterValue

इसका मतलब है कि चेकबॉक्स को valueविशेषता से मूल्य नहीं मिल रहा है lightning-input-field। इसके अलावा, चेकबॉक्स हमेशा यूआई में डिफ़ॉल्ट रूप से चेक किया हुआ दिखाई देता है। मैं चाहता हूं कि यह डिफ़ॉल्ट रूप से अनियंत्रित हो। मैं समझ नहीं पा रहा हूं कि ऐसा क्यों हो रहा है।

क्या यह filterValueएक स्ट्रिंग है? - मुझे इसकी एक स्ट्रिंग की आवश्यकता है क्योंकि अन्य सभी फ़ील्ड इसका उपयोग कर रहे हैं।

या यह इसलिए है क्योंकि मैं valueविशेषता के बजाय विशेषता का उपयोग करता हूं checked? - मुझे यह कहते हुए एक त्रुटि हुई कि ऐसी कोई checkedविशेषता नहीं है।

कृपया मदद करे। धन्यवाद! 😄

जवाब

4 PhilW Aug 17 2020 at 20:59

संभवतः जावास्क्रिप्ट के प्रकार के रूपांतरण नियमों के कारण; निम्नलिखित तरीके से एक स्ट्रिंग को बूलियन में परिवर्तित किया जाता है:

  • एक स्ट्रिंग जो अपरिभाषित, अशक्त या रिक्त है (अर्थात "") बन जाती है false
  • एक स्ट्रिंग जो उपरोक्त में से कोई नहीं है true

इस प्रकार, तार "सच" और "झूठे" दोनों trueबूलियन के रूप में बन जाते हैं । इसका समाधान करने के लिए आपको अपने फ़िल्टरवैल्यू को उत्पन्न करने या उपयोग करने के तरीके को बदलने की आवश्यकता है। उदाहरण के लिए, सुनिश्चित करें कि फ़िल्टरवैल्यू झूठे और "सच" के लिए अन्यथा सेट है।