デフォルト項目値を含むレコードの作成ページへの移動

事前入力された項目値を含むレコードの作成ページを起動するには、lightning/pageReferenceUtilslightning/navigation を一緒に使用します。

lightning/pageReferenceUtils モジュールには、デフォルト項目値を文字列に符号化および復号化するための encodeDefaultFieldValues() 関数と decodeDefaultFieldValues() 関数が用意されています。符号化文字列を standard__objectPage ページ参照の pageReference.state.defaultFieldValues 属性に割り当てます。

標準アクションでは、デフォルト項目値が URL を介して文字列としてオブジェクトに渡され、リダイレクトと置換が自動的に処理されます。上書きアクションでは、URL から受け取ったデフォルト項目値の文字列の復号化の処理はユーザが行います。

lwc-recipes サンプルリポジトリの navToNewRecordWithDefaults コンポーネントを参照してください。

Tip

標準アクションを使用してデフォルト項目値を含む取引先責任者レコードを起動する 

この例では、事前入力されたデフォルト値でレコードの作成ページを起動します。

この HTML の例には、取引先責任者を作成するリンクが含まれています。

1<!-- navToNewRecordWithDefaults.html -->
2<template>
3  <lightning-button
4    name="new-with-defaults"
5    label="Go to New Contact with Defaults"
6    class="slds-m-around_medium"
7    onclick={navigateToNewContactWithDefaults}>
8  </lightning-button>
9</template>

デフォルト項目値を文字列に復号化するには、encodeDefaultFieldValues() に渡します。符号化文字列をページ参照の state.defaultFieldValues 属性に割り当てます。

1// navToNewRecordWithDefaults.js
2import { LightningElement } from "lwc";
3import { NavigationMixin } from "lightning/navigation";
4import { encodeDefaultFieldValues } from "lightning/pageReferenceUtils";
5
6export default class NavToNewRecordWithDefaults extends NavigationMixin(LightningElement) {
7  navigateToNewContactWithDefaults() {
8    const defaultValues = encodeDefaultFieldValues({
9      FirstName: "Morag",
10      LastName: "de Fault",
11      LeadSource: "Other",
12    });
13
14    console.log(defaultValues);
15
16    this[NavigationMixin.Navigate]({
17      type: "standard__objectPage",
18      attributes: {
19        objectApiName: "Contact",
20        actionName: "new",
21      },
22      state: {
23        defaultFieldValues: defaultValues,
24      },
25    });
26  }
27}

上書きアクションを使用してデフォルト項目値を処理する 

標準アクション動作をカスタムソリューションで上書きするには、モジュールを Aura コンポーネント内にラップします。

1// auraOverrideWrapper.cmp
2<aura:component implements="lightning:actionOverride">
3  <c:lwcNewAccountOverride></c:lwcNewAccountOverride>
4</aura:component>

lwcNewAccountOverride コンポーネントには、デフォルト項目値を表示する新規取引先レコードページ用のフォームが含まれています。

1<!-- lwcNewAccountOverride.html -->
2<template>
3  <lightning-record-edit-form object-api-name="Account" onsuccess={handleAccountCreated}>
4    <lightning-input-field field-name="Name" value={dfv_AccountName}> </lightning-input-field>
5    <lightning-input-field field-name="NumberOfEmployees" value={dfv_NumberOfEmployees}>
6    </lightning-input-field>
7    <lightning-input-field field-name="OwnerId" value={dfv_OwnerId}> </lightning-input-field>
8    <lightning-input-field field-name="CustomCheckbox__c" value={dfv_CustomCheckbox}>
9    </lightning-input-field>
10
11    <lightning-button class="slds-m-top_small" type="submit" label="Create"> </lightning-button>
12  </lightning-record-edit-form>
13</template>

上書きアクションでは、URL から受け取ったデフォルト項目値の文字列の復号化の処理はユーザが行います。

次の例では、CurrentPageReference を使用して state からデフォルト項目値を読み取り、符号化文字列を取得します。次に、文字列を decodeDefaultFieldValues() に渡して復号化し、取引先の作成を処理します。

次の例は、lightning-record-edit-form を使用した項目値の事入力に似ていますが、フォームに移動すると defaultFieldValues が動的に生成されます。

1// lwcNewAccountOverride.js
2import { LightningElement, wire } from "lwc";
3import { CurrentPageReference } from "lightning/navigation";
4import { decodeDefaultFieldValues } from "lightning/pageReferenceUtils";
5
6export default class LwcNewAccountOverride extends LightningElement {
7  @wire(CurrentPageReference)
8  setCurrentPageReference(currentPageReference) {
9    if (currentPageReference.state.defaultFieldValues) {
10      const dfvObject = decodeDefaultFieldValues(currentPageReference.state.defaultFieldValues);
11      this.dfv_AccountName = dfvObject.Name;
12      this.dfv_NumberOfEmployees = dfvObject.NumberOfEmployees;
13      // Handling required for boolean because we don't support boolean field types
14      this.dfv_CustomCheckbox = dfvObject.CustomCheckbox__c === "true";
15      this.dfv_OwnerId = dfvObject.OwnerId;
16    }
17  }
18
19  dfv_AccountName = "";
20  dfv_NumberOfEmployees = "";
21  dfv_OwnerId = "";
22  dfv_CustomCheckbox = false;
23
24  // Run code when account is created
25  handleAccountCreated() {}
26}

すべての復号化されたデフォルト項目値は、文字列としてレコード作成ページに渡されます。たとえば、35000 は数値データ型ではなく、文字列としてページに渡され、Boolean 値 true および false は文字列として渡されます。

Important

このコードを使用するには、[設定] から「オブジェクトマネージャ」と入力します。取引先オブジェクトで、CustomCheckbox__c という API 参照名のチェックボックス項目を作成します。次に、[ボタン、リンク、およびアクション] を選択して [新規] アクションを編集します。[Lightning Experience の上書き] で、[Lightning コンポーネント] を選択し、c:auraOverrideWrapper コンポーネントを選択します。

関連トピック

The Japanese Summer '24 guide is now live

日本語の Summer '24 ガイドが公開されました! 「Component Reference (コンポーネントリファレンス)」は、以前と同様にコンポーネントライブラリにあります。