Im receiving the following error when trying to initialize the OnboardingPeopleResult class from a button on my LWC form. This data object initializes an inner class OnboardingAddressResult as one if its properties. Im hoping someone can help me answer why the inner class' properties are not available to the LWC?
[Cannot read property 'street1' of undefined]
//Outer Class
public class OnboardingPeopleResult {
@AuraEnabled
public String accountid {get;set;}
@AuraEnabled
public String firstname {get;set;}
@AuraEnabled
public String lastname {get;set;}
@AuraEnabled
public String middlename {get;set;}
@AuraEnabled
public OnboardingAddressResult employerAddress {get;set;}
public OnboardingPeopleResult() { //String accountid, String firstname, String lastnameAccount client, Account pa, AccountConctactRelationship acr
this.accountid = '';
this.firstname = '';
this.lastname = '';
this.middlename = '';
this.employerAddress = new OnboardingAddressResult();
}
}
//Inner Class
public class OnboardingAddressResult {
@AuraEnabled
public string customname{get;set;}
@AuraEnabled
public string street1{get;set;}
@AuraEnabled
public string street2{get;set;}
@AuraEnabled
public string city{get;set;}
@AuraEnabled
public string state{get;set;}
@AuraEnabled
public string postalcode{get;set;}
@AuraEnabled
public integer key {get;set;}
public OnboardingAddressResult() {
this.customname = '';
this.street1 = '';
this.street2 = '';
this.city = '';
this.state = '';
this.postalcode = '';
this.key = 0;
}
}
public with sharing class Onboarding {
@AuraEnabled
public static OnboardingPeopleResult newEmptyWrapper(){
OnboardingPeopleResult oar = new OnboardingPeopleResult();
return oar;
}
}
<template>
<lightning-card title="People">
<lightning-button label="New" slot="actions" onclick={handleNewAction}></lightning-button>
</lightning-card>
...
<lightning-layout multiple-rows="true">
<lightning-layout-item size="12" small-device-size="12" medium-device-size="3" large-device-size="3">
<div class="custom-pad"><lightning-input type="text" label="Street" value={record.employerAddress.street1}></lightning-input></div>
</lightning-layout-item>
<lightning-layout-item size="12" small-device-size="12" medium-device-size="3" large-device-size="3">
<div class="custom-pad"><lightning-input type="text" label="City" value={record.employerAddress.city}></lightning-input></div>
</lightning-layout-item>
<lightning-layout-item size="12" small-device-size="12" medium-device-size="3" large-device-size="3">
<div class="custom-pad"><lightning-input type="text" label="State" value={record.employerAddress.state}></lightning-input></div>
</lightning-layout-item>
<lightning-layout-item size="12" small-device-size="12" medium-device-size="3" large-device-size="3">
<div class="custom-pad"><lightning-input type="text" label="Postal Code" value={record.employerAddress.postalcode}></lightning-input></div>
</lightning-layout-item>
</lightning-layout>
...
</template>
import getEmptyOnboardingPeopleResult from '@salesforce/apex/Onboarding.newEmptyWrapper';
export default class OnboardingPeople extends LightningElement {
@wire(getEmptyOnboardingPeopleResult)
emptyRow;
handleNewAction(){
this.record = this.emptyRow;
this.bShowModal = true;
}
}
OnboardingAddressResult
as well as on the properties like you have now. – Matt Lacey♦ Nov 14 '19 at 22:40@AuraEnabled
on classes (just variables). Is that the entire js controller? where is record defined? does it have any decorator? – Glen De Marcos Nov 15 '19 at 0:49