Liste de sélection dynamique pour la combobox éclair

Aug 18 2020

communauté. J'ai une question sur deux champs personnalisés de type Listes de sélection et lightning-combobox.
Supposons que la liste déroulante 1 affiche la valeur de la liste de sélection 1 tandis que la zone de liste déroulante 2 affiche la valeur de la liste de sélection 2.

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

J'ai utilisé le javascript suivant pour récupérer les valeurs de la liste de sélection.

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

Mises à jour du 19 août: Merci pour les conseils de @arut. AvecgetPicklistValuesByRecordType, je peux récupérer toutes les valeurs de liste de sélection d'un objet. Ci-dessous le code: 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;
        }
    }

Ensuite, vous pouvez les définir dans le HTML comme celui décrit par le document développeur.

Référence: Créer une interface utilisateur pour les listes de sélection getPicklistValuesByRecordType

Réponses

1 arut Aug 18 2020 at 17:52

Vous pouvez utiliser getPicklistValuesByRecordType à la place de getPicklistValues. Cela renverra une carte des valeurs de chaîne et de liste de sélection (en tant que collection de valeurs de liste de sélection ), que vous pouvez ensuite analyser et définir les deux zones de liste en une seule fois. Cela supprimerait également l'appel de serveur apex supplémentaire.