+ Start a Discussion
Julien SalensonJulien Salenson 

lightning:recordeditform is not populating lookup fields


I have created this component :
<lightning:recordEditForm aura:id="edit" recordId="{!v.recordId}" 
    <lightning:inputField fieldName="Sales_DT__c" variant="label-hidden"/>

Where Sales_DT__c is a lookup on User.
This field Sales_DT__c  has a value recorded : 00530000004FGcfAAG.

Before, it's was working with this old workaround : add lightning:recordViewForm in the same compoent, but it's doesn't work anymore :
<lightning:recordViewForm recordId="{!v.recordId}" 
                              objectApiName="Account" >
        <div class="slds-hidden">
            <lightning:outputField fieldName="Sales_DT__c" />

I have already read this : https://developer.salesforce.com/forums#!/feedtype=SINGLE_QUESTION_SEARCH_RESULT&id=9060G0000005qTaQAI

But, I didn't found a good response.

Any idea on how to populating this lookup field when I load the component ?
Can you try to populate field like this
component.find('LastName').set('v.value', 'Tushar Sharma');

You can find complete code here: https://newstechnologystuff.com/2018/10/06/lightningrecordeditform-save-data-without-apex/

If this answer helps you, please mark it as accepted.

Tushar Sharma
Julien SalensonJulien Salenson
Hi Tushar,

But how to populate it with his current value (instead of 'Tushar Sharma') ?

Thank you
Julien SalensonJulien Salenson

I have contacted SF support and they gave me 2 workarounds : 
1)For the lookup field to be populated from lightning:recordEditform, the field MUST first be included in the page layout of the object.

2) If you don't want to add it in the page layout, well it's a know issue :

Below is the sample code i they gave me created and I tested it : 
Lightning Component : 
<aura:component controller ="LookupBug" implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,forceCommunity:availableForAllPageTypes,force:lightningQuickAction" access="public" >
    <lightning:recordEditForm aura:id="edit"  recordId="{!v.recordId}"
                              objectApiName="Account" onload="{!c.handleLoad}" onsuccess = "{!c.showToast}">
        <lightning:inputField aura:id = "nameField" fieldName="Payments__c"  />
        <lightning:inputField fieldName="Name" />
        <lightning:inputField fieldName="Industry" />
        <lightning:inputField fieldName="Phone" />
        <div class="slds-align_absolute-center slds-m-top_medium"> 
            <lightning:button  variant="brand" type="submit" name="save" label="Save" />

Controller : 
    handleLoad: function (cmp, event, helper) {
         var action = cmp.get('c.getAccountResults');
            "accountId" : cmp.get("v.recordId")
        action.setCallback(this, function(response) {
            cmp.find("nameField").set("v.value", response.getReturnValue().Payments__c);

     showToast : function(component, event, helper) {
    var toastEvent = $A.get("e.force:showToast");
        "title": "Success!",
        "message": "The record has been updated successfully."

Apex controller :
public class LookupBug {
    public static Account getAccountResults(String accountId)
        return [Select Id,Payments__c from Account where Id =: accountId];

Notes :  

>> I have created a lookup field "Payments__c"  on Account object ,  which refers to custom object "Payments__c".
>> On the lightning component you can see in the lightning:recordEditForm form you have an aura:id on payments field.
>> On the Client Controller  in method onLoad , we call an apex controller to get the values of the lookup fields and populate them to the respective fields using aura:id.

>> onLoad function is called from onload  attribute call of   lightning:recordEditForm (i.e handleLoad method).