Liste de sélection dynamique pour la combobox éclair
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
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.