この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

force:hasSObjectName

force:hasSObjectName インター��ェースを Lightning コンポーネントに追加すると、現在のレコードの sObject 型の API 参照名をコンポーネントに割り当てることができます。さまざまな sObject 型のレコードでコンポーネントを使用でき、現在のレコードの特定のタイプに適応する必要がある場合は、sObject 名が便利です。このインターフェースは、Lightning Experience、Salesforce アプリケーション、およびテンプレートベースのコミュニティ内で使用される場合以外は影響しません。

このインターフェースはマーカーインターフェースです。マーカーインターフェースは、インターフェースの動作をコンポーネントに追加するよう伝える、コンポーネントのコンテナへの信号です。コンポーネントに特定のメソッドまたは属性を実装する必要はありません。コンポーネントの implements 属性にインターフェース名を追加するだけです。

このインターフェースは、sObjectName という名前の属性をコンポーネントに追加します。この属性は文字列型であり、その値は AccountmyNamespace__myObject__c のようなオブジェクトの API 名です。この例を次に示します。
1<aura:attribute name="sObjectName" type="String" />

コンポーネントで force:hasSObjectName を実装する場合、sObjectName 属性をコンポーネントに自分で追加する必要はありません。追加する場合は、属性のアクセスレベルまたは型を変更しないでください。変更すると、コンポーネントでランタイムエラーが発生します。

メモ

sObjectName 属性は、明示的なレコードコンテキストでコンポーネントを配置または呼び出す場合にのみ設定されます。たとえば、レコードページレイアウトに直接コンポーネントを配置する場合、またはレコードページやオブジェクトホームからコンポーネントをオブジェクトに固有なアクションとして呼び出す場合などがこれに該当します。コンポーネントをグローバルアクションとして呼び出す、またはプログラムで別のコンポーネント内に作成するなど、その他すべての場合には sObjectName は設定されないため、コンポーネントでこれを使用しないでください。

このようなサポートされないコンテキストには、現在のレコードへのアクセス権があるだろうと思われるコンテキストもいくつか��まれています。たとえば、次のような場合があります。 force:hasRecordIdforce:hasSObjectName は、このようなコンテキストではサポートされません。マーカーインターフェースは関連する属性をコンポーネントに追加しますが、どちらの属性にアクセスしても nullundefined が返されます。
  • グローバルアクションからコンポーネントを呼び出す (レコードページを表示している場合でも)
  • コミュニティのヘッダーまたはフッターナビゲーションからコンポーネントを呼び出す (ページにレコードが表示されている場合でも)

重要

次の例に、force:hasSObjectName インターフェースを Lightning コンポーネントに追加するために必要なマークアップを示します。

1<aura:component implements="force:lightningQuickAction,force:hasSObjectName">
2
3    <!-- ... -->
4    
5</aura:component>

コンポーネントのコントローラは、component.get("v.sObjectName") を使用して、recordId 属性から現在のレコードの ID にアクセスできます。recordId 属性は、force:hasSObjectName インターフェースによって自動的にコンポーネントに追加されます。