lightning-comboboxの動的選択リスト

Aug 18 2020

コミュニティ。選択リストとlightning-combobox。タイプの2つのカスタムフィールドについて質問がありました。
コンボボックス1が選択リスト1の値を示し、コンボボックス2が選択リスト2の値を示しているとします。

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

次のJavaScriptを使用して、選択リストの値を取得しました。

@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
         }
   });
}

8月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を構築するgetPicklistValuesByRecordType

回答

1 arut Aug 18 2020 at 17:52

の代わりにgetPicklistValuesByRecordTypeを使用できますgetPicklistValues。これにより、文字列と選択リストの値のマップが返され(選択リスト値コレクションとして)、両方のコンボボックスを一度に解析して設定できます。これにより、追加のapexサーバー呼び出しも削除されます。