Friday, November 29, 2019

Reading and Populating MAP in LWC

The following example uses wire adapter to get metadata about a specific object. The response includes metadata describing fields, child relationships, record type, and theme.
data.fields provides the list of all fields of contact object in a MAP with key value pair. objectInfo is a MAP which is populated with the values received in data.fields.
Javacript file:
/* eslint-disable guard-for-in */
/* eslint-disable no-console */
import { LightningElement, wire, track } from 'lwc';
import { getObjectInfo } from 'lightning/uiObjectInfoApi';
import CONTACT_OBJECT from '@salesforce/schema/Contact';

export default class UserOnboard extends LightningElement {

    @track objectInfo = [];

    @wire(getObjectInfo, { objectApiName: CONTACT_OBJECT })
    wiredContact({ error, data }) {
        if (data) {
            
            //data.fields is a Map<String, Field> 
            for(let key in data.fields)
            {
               //Inserting Data into Map
                this.objectInfo.push({value:data.fields[key].apiName, isRequired:data.fields[key].required, key:key})  
            }
        } else if (error) {
            this.error = error;
            this.record = undefined;
        }
    }
   
}
html file:
<template>
    <lightning-card title="Wire Get Object Info" icon-name="custom:custom67">
        <div class="slds-m-horizontal_medium">
                
            <template for:each={objectInfo} for:item='item'>
                <li class="slds-listbox__item slds-search-dropdown-list-items" key={item.key}>
                   <div>{item.value}</div>
                 </li>
            </template>
        </div>
    </lightning-card>
</template>

No comments:

Post a Comment

Learning Fun