Chain wire methods together in Lightning Web Components The Next CEO of Stack Overflow2019 Community Moderator ElectionDatabase.query not working with RecordTypeIdWhat are Lightning Web ComponentsWhat are these '@' symbol things in Web components [api, wire]?Change handler equivalent in Lightning Web ComponentsIs there a way to load every label data and every SObject description data in Lightning Web Component using only Javascript without any Apex?Import ES modules in LWCLWC: Picklist without knowing recordTypeIdWhen do @wire methods run (LWC)?Unable to upload a managed package with a generic errorUsing third-party Web Components with Lightning Web Components
The exact meaning of 'Mom made me a sandwich'
Plot of histogram similar to output from @risk
Writing differences on a blackboard
Is it okay to majorly distort historical facts while writing a fiction story?
Why do remote US companies require working in the US?
How to install OpenCV on Raspbian Stretch?
How do I align (1) and (2)?
Math-accent symbol over parentheses enclosing accented symbol (amsmath)
Received an invoice from my ex-employer billing me for training; how to handle?
How to avoid supervisors with prejudiced views?
Help understanding this unsettling image of Titan, Epimetheus, and Saturn's rings?
Recycling old answers
Newlines in BSD sed vs gsed
How to scale a tikZ image which is within a figure environment
Inappropriate reference requests from Journal reviewers
Why is my new battery behaving weirdly?
Do I need to write [sic] when a number is less than 10 but isn't written out?
Why is the US ranked as #45 in Press Freedom ratings, despite its extremely permissive free speech laws?
Is it professional to write unrelated content in an almost-empty email?
Why does the flight controls check come before arming the autobrake on the A320?
Can we say or write : "No, it'sn't"?
is it ok to reduce charging current for li ion 18650 battery?
Why the difference in type-inference over the as-pattern in two similar function definitions?
How to invert MapIndexed on a ragged structure? How to construct a tree from rules?
Chain wire methods together in Lightning Web Components
The Next CEO of Stack Overflow2019 Community Moderator ElectionDatabase.query not working with RecordTypeIdWhat are Lightning Web ComponentsWhat are these '@' symbol things in Web components [api, wire]?Change handler equivalent in Lightning Web ComponentsIs there a way to load every label data and every SObject description data in Lightning Web Component using only Javascript without any Apex?Import ES modules in LWCLWC: Picklist without knowing recordTypeIdWhen do @wire methods run (LWC)?Unable to upload a managed package with a generic errorUsing third-party Web Components with Lightning Web Components
According to the documentation here in order to retrieve a list of picklist values for an object we need to pass in a Record Type Id which can be retrieved using the getObjectInfo method.
The issue is that these are both wire functions and I cannot figure out how to chain these methods.
If I try code like the following:
getObjectInfo( objectApiName: ACCOUNT_OBJECT )
.then(result =>
return getPicklistValues(recordTypeId: result.defaultRecordTypeId, fieldApiName: TYPE_FIELD);
)
.then(result =>
this.picklistValues = result.data
)
.catch(error =>
this.error = error;
);
I get an error
render threw an error in 'c:getpicklistexample' [Imperative use is not
supported. Use @wire(getObjectInfo).]
If I try something like
@track rtId;
@wire(getObjectInfo, objectApiName: ACCOUNT_OBJECT )
handleResult(error, data)
if(data)
this.rtId = data.defaultRecordTypeId;
@wire(getPicklistValues, recordTypeId: this.rtId,fieldApiName: TYPE_FIELD)
picklistValues;
Then it throws an internal server error. Anybody have an idea as to how I could retrieve the record type Id and then call to get the pick list values like the documentation suggests?
FYI my imports are:
import LightningElement, wire, track from 'lwc';
import getPicklistValues, getObjectInfo from 'lightning/uiObjectInfoApi';
import TYPE_FIELD from '@salesforce/schema/Account.Type';
import ACCOUNT_OBJECT from '@salesforce/schema/Account';
lightning lightning-web-components
add a comment |
According to the documentation here in order to retrieve a list of picklist values for an object we need to pass in a Record Type Id which can be retrieved using the getObjectInfo method.
The issue is that these are both wire functions and I cannot figure out how to chain these methods.
If I try code like the following:
getObjectInfo( objectApiName: ACCOUNT_OBJECT )
.then(result =>
return getPicklistValues(recordTypeId: result.defaultRecordTypeId, fieldApiName: TYPE_FIELD);
)
.then(result =>
this.picklistValues = result.data
)
.catch(error =>
this.error = error;
);
I get an error
render threw an error in 'c:getpicklistexample' [Imperative use is not
supported. Use @wire(getObjectInfo).]
If I try something like
@track rtId;
@wire(getObjectInfo, objectApiName: ACCOUNT_OBJECT )
handleResult(error, data)
if(data)
this.rtId = data.defaultRecordTypeId;
@wire(getPicklistValues, recordTypeId: this.rtId,fieldApiName: TYPE_FIELD)
picklistValues;
Then it throws an internal server error. Anybody have an idea as to how I could retrieve the record type Id and then call to get the pick list values like the documentation suggests?
FYI my imports are:
import LightningElement, wire, track from 'lwc';
import getPicklistValues, getObjectInfo from 'lightning/uiObjectInfoApi';
import TYPE_FIELD from '@salesforce/schema/Account.Type';
import ACCOUNT_OBJECT from '@salesforce/schema/Account';
lightning lightning-web-components
FYI, aware I could probably do this with apex but the docs suggest that I should be able to do this otherwise.
– pbattisson
4 hours ago
add a comment |
According to the documentation here in order to retrieve a list of picklist values for an object we need to pass in a Record Type Id which can be retrieved using the getObjectInfo method.
The issue is that these are both wire functions and I cannot figure out how to chain these methods.
If I try code like the following:
getObjectInfo( objectApiName: ACCOUNT_OBJECT )
.then(result =>
return getPicklistValues(recordTypeId: result.defaultRecordTypeId, fieldApiName: TYPE_FIELD);
)
.then(result =>
this.picklistValues = result.data
)
.catch(error =>
this.error = error;
);
I get an error
render threw an error in 'c:getpicklistexample' [Imperative use is not
supported. Use @wire(getObjectInfo).]
If I try something like
@track rtId;
@wire(getObjectInfo, objectApiName: ACCOUNT_OBJECT )
handleResult(error, data)
if(data)
this.rtId = data.defaultRecordTypeId;
@wire(getPicklistValues, recordTypeId: this.rtId,fieldApiName: TYPE_FIELD)
picklistValues;
Then it throws an internal server error. Anybody have an idea as to how I could retrieve the record type Id and then call to get the pick list values like the documentation suggests?
FYI my imports are:
import LightningElement, wire, track from 'lwc';
import getPicklistValues, getObjectInfo from 'lightning/uiObjectInfoApi';
import TYPE_FIELD from '@salesforce/schema/Account.Type';
import ACCOUNT_OBJECT from '@salesforce/schema/Account';
lightning lightning-web-components
According to the documentation here in order to retrieve a list of picklist values for an object we need to pass in a Record Type Id which can be retrieved using the getObjectInfo method.
The issue is that these are both wire functions and I cannot figure out how to chain these methods.
If I try code like the following:
getObjectInfo( objectApiName: ACCOUNT_OBJECT )
.then(result =>
return getPicklistValues(recordTypeId: result.defaultRecordTypeId, fieldApiName: TYPE_FIELD);
)
.then(result =>
this.picklistValues = result.data
)
.catch(error =>
this.error = error;
);
I get an error
render threw an error in 'c:getpicklistexample' [Imperative use is not
supported. Use @wire(getObjectInfo).]
If I try something like
@track rtId;
@wire(getObjectInfo, objectApiName: ACCOUNT_OBJECT )
handleResult(error, data)
if(data)
this.rtId = data.defaultRecordTypeId;
@wire(getPicklistValues, recordTypeId: this.rtId,fieldApiName: TYPE_FIELD)
picklistValues;
Then it throws an internal server error. Anybody have an idea as to how I could retrieve the record type Id and then call to get the pick list values like the documentation suggests?
FYI my imports are:
import LightningElement, wire, track from 'lwc';
import getPicklistValues, getObjectInfo from 'lightning/uiObjectInfoApi';
import TYPE_FIELD from '@salesforce/schema/Account.Type';
import ACCOUNT_OBJECT from '@salesforce/schema/Account';
lightning lightning-web-components
lightning lightning-web-components
asked 4 hours ago
pbattissonpbattisson
2,6601619
2,6601619
FYI, aware I could probably do this with apex but the docs suggest that I should be able to do this otherwise.
– pbattisson
4 hours ago
add a comment |
FYI, aware I could probably do this with apex but the docs suggest that I should be able to do this otherwise.
– pbattisson
4 hours ago
FYI, aware I could probably do this with apex but the docs suggest that I should be able to do this otherwise.
– pbattisson
4 hours ago
FYI, aware I could probably do this with apex but the docs suggest that I should be able to do this otherwise.
– pbattisson
4 hours ago
add a comment |
1 Answer
1
active
oldest
votes
You have to use dynamic binding:
@wire(getPicklistValues, recordTypeId: "$rtId", fieldApiName: TYPE_FIELD)
picklistValues;
This is mentioned in Use the Wire Service to Get Data.
I wrote a mockup that demonstrates this. You should be able to copy-paste this code directly.
<template>
<template if:true=hasPicklistValues>
<select>
<template for:each=picklistValues.data.values for:item="entry">
<option key=entry.value value=entry.label>entry.label</option>
</template>
</select>
</template>
</template>
import LightningElement, wire, track from 'lwc';
import getPicklistValues, getObjectInfo from 'lightning/uiObjectInfoApi';
import TYPE_FIELD from '@salesforce/schema/Account.Type';
import ACCOUNT_OBJECT from '@salesforce/schema/Account';
export default class Democomponent extends LightningElement
@track rtId;
@track error;
@wire(getObjectInfo, objectApiName: ACCOUNT_OBJECT )
handleResult(error, data)
if(data)
this.rtId = data.defaultRecordTypeId;
else
this.error = error;
@wire(getPicklistValues, recordTypeId: "$rtId", fieldApiName: TYPE_FIELD)
picklistValues;
get hasPicklistValues()
return this.picklistValues && this.picklistValues.data && this.picklistValues.data.values;
1
This is also how I would approach this (been writing LWC since it ga-ed). One trick for @wire is that it's reactive off value change and null to value is a perfectly valid reaction. My suspicion is that under the hood, it's a hash check on the property value.
– tsalb
3 hours ago
@tsalb Thanks for confirming. I ended up writing up a mock for this anyways, it wasn't terribly bad.
– sfdcfox
3 hours ago
Such is the speed of implementation when using ui*API and LWC ;)
– tsalb
2 hours ago
And there is the thing I was missing. Thanks @sfdcfox for the answer.
– pbattisson
30 mins ago
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "459"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f255958%2fchain-wire-methods-together-in-lightning-web-components%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You have to use dynamic binding:
@wire(getPicklistValues, recordTypeId: "$rtId", fieldApiName: TYPE_FIELD)
picklistValues;
This is mentioned in Use the Wire Service to Get Data.
I wrote a mockup that demonstrates this. You should be able to copy-paste this code directly.
<template>
<template if:true=hasPicklistValues>
<select>
<template for:each=picklistValues.data.values for:item="entry">
<option key=entry.value value=entry.label>entry.label</option>
</template>
</select>
</template>
</template>
import LightningElement, wire, track from 'lwc';
import getPicklistValues, getObjectInfo from 'lightning/uiObjectInfoApi';
import TYPE_FIELD from '@salesforce/schema/Account.Type';
import ACCOUNT_OBJECT from '@salesforce/schema/Account';
export default class Democomponent extends LightningElement
@track rtId;
@track error;
@wire(getObjectInfo, objectApiName: ACCOUNT_OBJECT )
handleResult(error, data)
if(data)
this.rtId = data.defaultRecordTypeId;
else
this.error = error;
@wire(getPicklistValues, recordTypeId: "$rtId", fieldApiName: TYPE_FIELD)
picklistValues;
get hasPicklistValues()
return this.picklistValues && this.picklistValues.data && this.picklistValues.data.values;
1
This is also how I would approach this (been writing LWC since it ga-ed). One trick for @wire is that it's reactive off value change and null to value is a perfectly valid reaction. My suspicion is that under the hood, it's a hash check on the property value.
– tsalb
3 hours ago
@tsalb Thanks for confirming. I ended up writing up a mock for this anyways, it wasn't terribly bad.
– sfdcfox
3 hours ago
Such is the speed of implementation when using ui*API and LWC ;)
– tsalb
2 hours ago
And there is the thing I was missing. Thanks @sfdcfox for the answer.
– pbattisson
30 mins ago
add a comment |
You have to use dynamic binding:
@wire(getPicklistValues, recordTypeId: "$rtId", fieldApiName: TYPE_FIELD)
picklistValues;
This is mentioned in Use the Wire Service to Get Data.
I wrote a mockup that demonstrates this. You should be able to copy-paste this code directly.
<template>
<template if:true=hasPicklistValues>
<select>
<template for:each=picklistValues.data.values for:item="entry">
<option key=entry.value value=entry.label>entry.label</option>
</template>
</select>
</template>
</template>
import LightningElement, wire, track from 'lwc';
import getPicklistValues, getObjectInfo from 'lightning/uiObjectInfoApi';
import TYPE_FIELD from '@salesforce/schema/Account.Type';
import ACCOUNT_OBJECT from '@salesforce/schema/Account';
export default class Democomponent extends LightningElement
@track rtId;
@track error;
@wire(getObjectInfo, objectApiName: ACCOUNT_OBJECT )
handleResult(error, data)
if(data)
this.rtId = data.defaultRecordTypeId;
else
this.error = error;
@wire(getPicklistValues, recordTypeId: "$rtId", fieldApiName: TYPE_FIELD)
picklistValues;
get hasPicklistValues()
return this.picklistValues && this.picklistValues.data && this.picklistValues.data.values;
1
This is also how I would approach this (been writing LWC since it ga-ed). One trick for @wire is that it's reactive off value change and null to value is a perfectly valid reaction. My suspicion is that under the hood, it's a hash check on the property value.
– tsalb
3 hours ago
@tsalb Thanks for confirming. I ended up writing up a mock for this anyways, it wasn't terribly bad.
– sfdcfox
3 hours ago
Such is the speed of implementation when using ui*API and LWC ;)
– tsalb
2 hours ago
And there is the thing I was missing. Thanks @sfdcfox for the answer.
– pbattisson
30 mins ago
add a comment |
You have to use dynamic binding:
@wire(getPicklistValues, recordTypeId: "$rtId", fieldApiName: TYPE_FIELD)
picklistValues;
This is mentioned in Use the Wire Service to Get Data.
I wrote a mockup that demonstrates this. You should be able to copy-paste this code directly.
<template>
<template if:true=hasPicklistValues>
<select>
<template for:each=picklistValues.data.values for:item="entry">
<option key=entry.value value=entry.label>entry.label</option>
</template>
</select>
</template>
</template>
import LightningElement, wire, track from 'lwc';
import getPicklistValues, getObjectInfo from 'lightning/uiObjectInfoApi';
import TYPE_FIELD from '@salesforce/schema/Account.Type';
import ACCOUNT_OBJECT from '@salesforce/schema/Account';
export default class Democomponent extends LightningElement
@track rtId;
@track error;
@wire(getObjectInfo, objectApiName: ACCOUNT_OBJECT )
handleResult(error, data)
if(data)
this.rtId = data.defaultRecordTypeId;
else
this.error = error;
@wire(getPicklistValues, recordTypeId: "$rtId", fieldApiName: TYPE_FIELD)
picklistValues;
get hasPicklistValues()
return this.picklistValues && this.picklistValues.data && this.picklistValues.data.values;
You have to use dynamic binding:
@wire(getPicklistValues, recordTypeId: "$rtId", fieldApiName: TYPE_FIELD)
picklistValues;
This is mentioned in Use the Wire Service to Get Data.
I wrote a mockup that demonstrates this. You should be able to copy-paste this code directly.
<template>
<template if:true=hasPicklistValues>
<select>
<template for:each=picklistValues.data.values for:item="entry">
<option key=entry.value value=entry.label>entry.label</option>
</template>
</select>
</template>
</template>
import LightningElement, wire, track from 'lwc';
import getPicklistValues, getObjectInfo from 'lightning/uiObjectInfoApi';
import TYPE_FIELD from '@salesforce/schema/Account.Type';
import ACCOUNT_OBJECT from '@salesforce/schema/Account';
export default class Democomponent extends LightningElement
@track rtId;
@track error;
@wire(getObjectInfo, objectApiName: ACCOUNT_OBJECT )
handleResult(error, data)
if(data)
this.rtId = data.defaultRecordTypeId;
else
this.error = error;
@wire(getPicklistValues, recordTypeId: "$rtId", fieldApiName: TYPE_FIELD)
picklistValues;
get hasPicklistValues()
return this.picklistValues && this.picklistValues.data && this.picklistValues.data.values;
edited 3 hours ago
answered 4 hours ago
sfdcfoxsfdcfox
262k12209454
262k12209454
1
This is also how I would approach this (been writing LWC since it ga-ed). One trick for @wire is that it's reactive off value change and null to value is a perfectly valid reaction. My suspicion is that under the hood, it's a hash check on the property value.
– tsalb
3 hours ago
@tsalb Thanks for confirming. I ended up writing up a mock for this anyways, it wasn't terribly bad.
– sfdcfox
3 hours ago
Such is the speed of implementation when using ui*API and LWC ;)
– tsalb
2 hours ago
And there is the thing I was missing. Thanks @sfdcfox for the answer.
– pbattisson
30 mins ago
add a comment |
1
This is also how I would approach this (been writing LWC since it ga-ed). One trick for @wire is that it's reactive off value change and null to value is a perfectly valid reaction. My suspicion is that under the hood, it's a hash check on the property value.
– tsalb
3 hours ago
@tsalb Thanks for confirming. I ended up writing up a mock for this anyways, it wasn't terribly bad.
– sfdcfox
3 hours ago
Such is the speed of implementation when using ui*API and LWC ;)
– tsalb
2 hours ago
And there is the thing I was missing. Thanks @sfdcfox for the answer.
– pbattisson
30 mins ago
1
1
This is also how I would approach this (been writing LWC since it ga-ed). One trick for @wire is that it's reactive off value change and null to value is a perfectly valid reaction. My suspicion is that under the hood, it's a hash check on the property value.
– tsalb
3 hours ago
This is also how I would approach this (been writing LWC since it ga-ed). One trick for @wire is that it's reactive off value change and null to value is a perfectly valid reaction. My suspicion is that under the hood, it's a hash check on the property value.
– tsalb
3 hours ago
@tsalb Thanks for confirming. I ended up writing up a mock for this anyways, it wasn't terribly bad.
– sfdcfox
3 hours ago
@tsalb Thanks for confirming. I ended up writing up a mock for this anyways, it wasn't terribly bad.
– sfdcfox
3 hours ago
Such is the speed of implementation when using ui*API and LWC ;)
– tsalb
2 hours ago
Such is the speed of implementation when using ui*API and LWC ;)
– tsalb
2 hours ago
And there is the thing I was missing. Thanks @sfdcfox for the answer.
– pbattisson
30 mins ago
And there is the thing I was missing. Thanks @sfdcfox for the answer.
– pbattisson
30 mins ago
add a comment |
Thanks for contributing an answer to Salesforce Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f255958%2fchain-wire-methods-together-in-lightning-web-components%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
FYI, aware I could probably do this with apex but the docs suggest that I should be able to do this otherwise.
– pbattisson
4 hours ago