Dynamic Picklist สำหรับ Lightning-combobox

Aug 18 2020

ชุมชน. ฉันมีคำถามเกี่ยวกับฟิลด์ที่กำหนดเองสองช่องที่มีประเภท Picklists และlightning-combobox.
สมมติว่า combobox 1 แสดงค่า Picklist 1 ในขณะที่ combobox 2 แสดงค่า Picklist 2

<template>
   <lightning-combobox label="Picklist 1" options={optionSet1}></lightning-combobox>
   <lightning-combobox label="Picklist 2" options={optionSet2}></lightning-combobox>
</template>

ฉันใช้จาวาสคริปต์ต่อไปนี้เพื่อดึงค่ารายการเลือก

@track optionSet1

@wire(getObjectInfo, { objectApiName: CUSTOM_OBJECT })
objectInfo;

@wire(getPicklistValues, { recordTypeId: '$objectInfo.data.defaultRecordTypeId', fieldApiName: FIELD_1 })
getPicklistValues({error, data}) {
   if (data) {
      this.optionSet1 = data.values.map(plValue => {
         return {
            label: plValue.label,
            value: plValue.value
         }
   });
}

อัปเดตตั้งแต่วันที่ 19 ส.ค. :ขอบคุณสำหรับคำแนะนำโดย @arut ด้วยgetPicklistValuesByRecordTypeฉันสามารถดึงค่ารายการเลือกทั้งหมดของวัตถุได้ ด้านล่างนี้คือรหัส: Javascript

options1;
options2;

@wire(getObjectInfo, { objectApiName: CUSTOM_OBJECT })
    objectInfo;

    @wire(getPicklistValuesByRecordType, {objectApiName: CUSTOM_OBJECT, recordTypeId: '$objectInfo.data.defaultRecordTypeId' })
    picklistValues({data, error}) {
        if (data) {
            this.options1 = data.picklistFieldValues.Field_1__c.values;
            this.options2 = data.picklistFieldValues.Field_2__c.values;
        }
    }

จากนั้นคุณสามารถตั้งค่าลงใน HTML เหมือนกับที่นักพัฒนาซอฟต์แวร์อธิบาย

การอ้างอิง: สร้าง UI สำหรับ Picklists getPicklistValuesByRecordType

คำตอบ

1 arut Aug 18 2020 at 17:52

คุณสามารถใช้getPicklistValuesByRecordTypeแทนgetPicklistValues. สิ่งนี้จะส่งคืนแผนที่ของสตริงเทียบกับค่ารายการเลือก (เป็นคอลเล็กชันค่าเลือกรายการ ) ซึ่งคุณสามารถแยกวิเคราะห์และตั้งค่ากล่องคำสั่งผสมทั้งสองได้ในครั้งเดียว สิ่งนี้จะลบการเรียกเซิร์ฟเวอร์เอเพ็กซ์เพิ่มเติม