レコードの編集

レコードを編集できるフォームを作成するための最も簡単な方法は、lightning-record-form を使用することです。フォームのレイアウトをカスタマイズしたり、カスタマイズ値を事前に読み込んだりするには、lightning-record-edit-form を使用します。

これらのコンポーネントよりも高い柔軟性が必要な場合は、「レコードを作成および編集するカスタム UI の作成」を参照してください。

レコードを編集するには、record-id および object-api-name 属性を使用します。レコード ID を指定した場合、コンポーネントではデフォルトでビューモードが使用され、出力項目に編集アイコンが表示されます。編集アイコンをクリックすると、すべての更新可能な項目が編集可能になります。編集可能なフォームには、レコードを更新するための [保存] ボタンと、変更内容を破棄するための [キャンセル] ボタンがあります。

コンポーネントには、デフォルトの送信およびエラーハンドラがあります。エラーは、自動的にリストの最上部に表示されます。

次の例は、コンパクトレイアウトで取引先レコードの項目を更新できるようにしています。項目は 2 列レイアウトで表示されます。

パフォーマンスが向上するように、できる限りレイアウトではなく項目を指定します。プロビジョニングされた項目をコンポーネントではなくシステム管理者が制御する場合にのみレイアウトを指定します。コンテキストユーザのレイアウトに割り当てられているすべての項目の受信をコンポーネントで制御する必要があります。

次の例をレコードページに配置することで、record-id プロパティと object-api-name プロパティを継承できます。

カスタムイベントを使用することで、送信の成功または失敗時にトーストを表示するなど、デフォルトのフォーム動作を上書きできます。詳細は、lightning-record-form リファレンスドキュメントを参照してください。

項目名の配列を指定するか、または項目への参照をインポートすることで、編集可能フォームに表示する項目を指定できます。

文字列を使用してオブジェクトや項目を渡しても、コンパイル時の検証は実行されません。項目の正当性は実行時までわかりません。@salesforce/schema からオブジェクトや項目への参照をインポートすることをお勧めします。

次の例では、github.com/trailheadapps/lwc-recipes リポジトリにある recordFormStaticContact コンポーネントを使用しています。静的なスキーマ定義を使用して、レコードの編集可能フォームを表示します。

JavaScript ファイルで項目参照をインポートします。

フォーム項目のカスタムレイアウトを指定するには、lightning-record-edit-form コンポーネントを使用します。レコード項目種別に基づいて入力コントロールを表示する lightning-input-field に項目を渡します。次の例では、カスタムレイアウトを使用していくつかの項目を表示しています。次のコンポーネントの例を取引先責任者レコードページに追加することで、record-id プロパティと object-api-name プロパティを継承できます。

lightning-record-edit-form は、フォームの送信とエラーを自動的に処理します。エラーメッセージを自動的にフォーム項目の上または下に表示するには、lightning-messageslightning-input-field コンポーネントの前または後に追加します。

lightning-record-edit-form には、lightning-record-form にあるような [キャンセル] ボタンや [保存] ボタンはありません。項目値を元に戻すための [キャンセル] ボタンを作成するには、reset() メソッドをコールする lightning-button コンポーネントを使用します。record-id に実際のレコード ID を指定するか、またはこの例を取引先責任者レコードページに配置することで record-id プロパティを継承します。

lightning-input-field コンポーネントの reset() メソッドをコールします。

lightning-record-edit-form は、フォームの送信とエラーを自動的に処理します。エラーメッセージを自動的にフォーム項目の上または下に表示するには、lightning-messageslightning-input-field コンポーネントの前または後に追加します。

lightning-record-edit-form では、次のカスタムイベントを処理できます。

  • error — フォームがサーバ側のエラーを返した時点で実行されます。
  • load — フォームがレコードデータを読み込んだ時点で実行されます。
  • submit — フォームが送信されたときに起動します。
  • success — フォームデータが正常に保存されたときに起動します。

次の例は、フォームの送信時にエラーが発生した場合にトーストを表示します。よくあるエラーとしては、ネットワークにアクセスされていない、フォームに必須項目がない、などがあります。実際のレコード ID を指定するか、またはこの例を取引先責任者レコードページに配置することでレコード ID を継承します。

トーストを表示するには、lightning/platformShowToastEvent モジュールをインポートします。

event.detail.message は、エラーの一般的な説明を返します。項目固有のエラー (入力規則からのエラーなど) を返すには、項目とレコード例外エラーのリストを提供する event.detail.output.fieldErrors を使用します。

FirstNameLastNameEmail 項目で入力規則エラーが発生すると、event.detail.output.fieldErrors では次のような情報が返されます。

詳細は、lightning-record-edit-form リファレンスドキュメントを参照してください。

**「カスタムイベントを使用したデフォルト動作の変更」**で説明されているように、lightning-record-edit-form でネストされる lightning-input-field を使用して入力規則エラーを作成し、項目検証を適用することをお勧めします。

lightning-input-field では、クライアント側カスタム検証はサポートされていません。独自のクライアント側検証を実装する場合、代わりに lightning-record-edit-form でネストされる lightning-input を使用することを検討してください。

次の例を取引先レコードページに配置します。この例では、編集できるように lightning-input コンポーネントを [名前] 項目に結び付けます。

getRecord ワイヤアダプタを使用して lightning-input コンポーネントを Salesforce 項目に結び付け、独自の表示ラベルを提供します。この結び付けは、lightning-input-field を使用していると自動的に行われますが、lightning-input を使用していると自動的に行われません。lightning-record-edit-formonsubmit イベントハンドラを使用してレコードデータを送信します。イベントハンドラで、setCustomValidity() を使用して検証チェックを実行し、ユーザ入力値で項目を更新します。

lightning-input には、カスタム検証の属性 (minmaxpattern など) が用意されています。詳細は、lightning-input リファレンスドキュメントを参照してください。

lightning-input-field は、lightning-record-edit-form と共に使用することが推奨されるコンポーネントです。入力規則エラーで要件を満たすことができない場合にのみ lightning-record-edit-form と共に lightning-input を使用してください。