Add the force:hasSObjectName
interface to a Lightning component to
enable the component to be assigned the API name of current record’s sObject type. The sObject
name is useful if the component can be used with records of different sObject types, and needs to
adapt to the specific type of the current record.
This interface has no effect except when used
within Lightning Experience, Salesforce app,
and template-based communities.
This interface is a marker interface. A
marker interface is a signal to the component’s container to add the interface’s behavior to
the component. You don’t need to implement any specific methods or attributes in your
component, you simply add the interface name to the component’s implements attribute.
This interface adds an attribute named
sObjectName to your component. This attribute is of type String,
and its value is the API name of an object, such as
Account
or
myNamespace__myObject__c. For example:
1<aura:attribute name="sObjectName" type="String" />
If
your component implements force:hasSObjectName, you don’t
need to add an sObjectName attribute to the component
yourself. If you do add it, don’t change the access level or type of the attribute or the
component will cause a runtime error.
The sObjectName
attribute is set only when you place or invoke the component in an explicit record context. For
example, when you place the component directly on a record page layout, or invoke it as an
object-specific action from a record page or object home. In all other cases, such as when you
invoke the component as a global action, or create the component programmatically inside
another component, sObjectName isn’t set, and your
component shouldn’t depend on it.
These unsupported contexts include a few
contexts that might seem like they should have access to the current record. Examples of
these other contexts include the following:
force:hasRecordId and force:hasSObjectName are unsupported in these
contexts. While the marker interfaces still add the relevant attribute to the component,
accessing either attribute generally returns null
or undefined.
- Invoking the component from a global action (even when you’re on a record page)
- Invoking the component from header or footer navigation in a community (even if the
page shows a record)
Example
This example shows the markup required to add the force:hasSObjectName interface to a Lightning component.
1<aura:component implements="force:lightningQuickAction,force:hasSObjectName">
2
3 <!-- ... -->
4
5</aura:component>
The component’s controller can access the ID of the current record from the recordId attribute, using component.get("v.sObjectName"). The recordId
attribute is automatically added to the component by the force:hasSObjectName interface.