Usage Of lightning-record-form
Let us discuss here how to use the lightning-record-form . A lightning-record-form
component enables you to quickly create forms to add, view, or update a record. Using this component to create record forms is easier than building forms manually with lightning-record-edit-form
and lightning-record-view-form
. However, lightning-record-form
does not support client-side validation quite the same as lightning-record-edit-form
.The object-api-name
attribute is always required, and the record-id
is required unless you’re creating a record.
Modes
The component accepts a mode
value that determines the user interaction allowed for the form. The value for mode
can be one of the following:
edit
– Creates an editable form to add a record or update an existing one. When updating an existing record, specify the recordId. Edit mode is the default, and as such, can be omitted.view
– Creates a form to display a record that the user can also edit. The record fields each have an edit button.readonly
– Creates a form to display a record without enabling edits. The form doesn’t display any buttons.
For all modes, the component expects the fields
attribute, the layout-type
attribute, or both. Use the fields
attribute to specify a comma-separated list of record fields to load into the form. The fields load in the order you list them. Use the layout-type
attribute to specify a Full
or Compact
layout. All fields that have been assigned to the layout are loaded into the form. This is the same behavior as the Lightning Data Service’s force:recordData
object. Layouts are typically created or modified by administrators. Loading record data using layout-type
allows the form to adapt to those layout definitions. If you provide the fields
attribute and the layout-type
attribute, the fields specified in the fields
attribute are loaded before the layout fields.
This component takes care of field-level security and sharing for you, so users see only the data that they have access to.
Creating a Record
Use mode="edit"
and pass in the object API name for the record to be created. Do not specify a recordId. Specify the fields using the fields
attribute, or layout-type="Full"
attribute to load all the fields defined on the full layout.The compact layout cannot be used for creating records. If you specify layout-type="Compact"
, the full layout is shown. If you specify the fields
attribute, be sure to include any fields that are designated as required for the object’s records. Because no recordId is passed, edit mode loads the form with input fields that aren’t populated with field data. The form displays Submit and Cancel buttons.This example creates an editable two-column form with the full layout and additional fields. The form is used for creating records in an Account object. The onsubmit
attribute specifies an action to override the handler for the submit.
Create a Lightning web component using the below SFDX command
sfdx force:lightning:component:create --type lwc --componentname recordform --outputdir force-app\main\default\lwc
Use the below recordform.html code
<template>
<lightning-record-form object-api-name="Account" layout-type="Compact" columns="2" mode="edit" onsuccess={handleSuccess} onsubmit={handleSubmit}>
</lightning-record-form></template>
Use the below recordform.js code
import {LightningElement,api} from 'lwc';
export default class Recordform extends LightningElement {
handleSubmit(event) {
console.log(event.detail)
}
handleSuccess(event) {
console.log('Record iD' + event.detail.id);
}
}
Use the below recordform.js-meta.xml code
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="helloWorld"> <apiVersion>45.0</apiVersion>
<isExposed>true</isExposed>
<targets>
<target>lightning__RecordPage</target>
</targets>
</LightningComponentBundle>
Push the changes and add this component to the record page layout. you can able to see the complete record create a form
Now let’s see how to use create a record with specific fields. Now update the recordform.html code as shown below
<template>
<lightning-record-form object-api-name={accountObject} fields={myFields} mode="edit" onsuccess={handleSuccess} onsubmit={handleSubmit}>
</lightning-record-form>
</template>
Use the below recordform.js code which will be passed to the record form.
import {LightningElement,api} from 'lwc';
import ACCOUNT_OBJECT from '@salesforce/schema/Account';
import NAME_FIELD from '@salesforce/schema/Account.Name';
import WEBSITE_FIELD from '@salesforce/schema/Account.Website';
export default class Recordform extends LightningElement {
accountObject = ACCOUNT_OBJECT;
myFields = [NAME_FIELD, WEBSITE_FIELD];
handleSubmit(event) {
console.log(event.detail);
}
handleSuccess(event) {
console.log('Record iD' + event.detail.id);
}
}
Push the changes and you can able to see the create form with two fields as shown below.
Editing a Record
If you do not specify the mode
attribute, its default value is edit
. To edit a record, pass the ID of the record and the corresponding object API name to be edited. Specify the fields using the fields
attribute, or layout-type
attribute to load all the fields defined on the Full or Compact layout. When record-id
is passed, edit mode loads the form with input fields displaying the specified record’s field values. The form also displays Submit and Cancel buttons. This example creates an editable two-column form with a compact layout and additional fields. The form is used for editing records in an Account object. The onsubmit
attribute specifies an action to override the handler for the submit. Update the recordform.html code as shown below.
<template>
<lightning-record-form record-id={recordId} object-api-name="Account" layout-type="Full" columns="2" mode="edit" onsuccess={handleSuccess} onsubmit={handleSubmit}>
</lightning-record-form>
</template>
update the recordform.js code as shown below.
import {LightningElement, api} from 'lwc';
export default class Recordform extends LightningElement {
@api recordId;
handleSubmit(event) {
console.log(event.detail);
}
handleSuccess(event) {
console.log('Record iD' + event.detail.id);
}
}
Use mode="view"
and pass the ID of the record and the corresponding object API name to be displayed. Specify the fields using the fields
attribute, or layout-type
attribute to display all the fields defined on the Full or Compact layout.
the following code shows the how to edit the specific fields instead of layouts.update the recordform.html code as below.
<template>
<lightning-record-form object-api-name={accountObject} record-id={recordId} fields={myFields} mode="edit"
onsuccess={handleSuccess} onsubmit={handleSubmit}>
</lightning-record-form></template>
update the recordform.js code as shown below.
import { LightningElement, api} from 'lwc';
import ACCOUNT_OBJECT from '@salesforce/schema/Account';
import NAME_FIELD from '@salesforce/schema/Account.Name';
import WEBSITE_FIELD from '@salesforce/schema/Account.Website';
export default class Recordform extends LightningElement {
@api recordId ;
accountObject = ACCOUNT_OBJECT;
myFields = [NAME_FIELD, WEBSITE_FIELD];
handleSubmit(event) {
console.log(event.detail);
}
handleSuccess(event) {
console.log('Record iD' + event.detail.id);
}
}
Now you can able to see the changes as shown below with the specified fields.
Viewing a Record Read-Only
The simplest way to display a record is to use the lightning-record-form
. You can display a record in two modes.view
Loads the form using output fields with inline editing enabled. Editable fields have edit icons. If a user clicks an edit icon, all fields in the form become editable, and the form displays Submit and Cancel buttons.read-only
Read-only mode loads the form with output fields only. The form doesn’t include edit icons, Submit and Cancel buttons.
This code displays an account record in view mode using the compact layout, which includes fewer fields than the full layout.
Use mode="readonly"
and pass the ID of the record and the corresponding object API name to be displayed. Specify the fields using the fields
attribute, or layout-type
attribute to display all the fields defined on the Full or Compact layout. The read-only mode loads the form with output fields only, and without Submit or Cancel buttons.The following code specifis how to use the read-only mode. Use the below recordform.html code.
<template>
<lightning-record-form record-id={recordId} object-api-name="Account"
layout-type="Full" columns="2" mode="readonly"
onsuccess={handleSuccess} onsubmit={handleSubmit}>
</lightning-record-form>
</template>
You can able to see the record with read-only data .
Let’s update the code with view mode as shown below. view
Loads the form using output fields with inline editing enabled. Editable fields have edit icons. If a user clicks an edit icon, all fields in the form become editable, and the form displays Submit and Cancel buttons.
Update the code as shown below and you can able to see the edit icon
<template>
<lightning-record-form record-id={recordId} object-api-name="Account" layout-type="Full" columns="2" mode="View" onsuccess={handleSuccess} onsubmit={handleSubmit}>
</lightning-record-form></template>
Using Record types
If your org uses record types, picklist fields display values according to your record types. You must provide a record type ID using the record-type-id
attribute if you have multiple record types on an object and you don’t have a default record type. Otherwise, the default record type ID is used. Display a record create a form based on a record type by providing the record-type-id
attribute. This example shows a form that you can place on an account record page. The form displays fields, which include a picklist with values based on the given record type Id.
<lightning-record-form object-api-name={objectApiName} record-type-id={recordTypeId} fields={fields}></lightning-record-form>
Error Message
To enable automatic error handling, include the component lightning-messages
.To customize the behavior of your form when it loads or when data is submitted, use the onload
and onsubmit
attributes to specify event handlers. Errors are automatically handled. To customize the behavior of the form when it encounters an error on submission or when data is submitted successfully, use the onerror
and onsuccess
attributes to specify event handlers
<template>
<lightning-messages></lightning-messages>
<lightning-record-form record-id={recordId} object-api-name="Account" layout-type="Full" columns="2" mode="View" onsuccess={handleSuccess} onsubmit={handleSubmit}>
</lightning-record-form></template>
Source : https://rajvakati.com/2019/02/16/lightning-record-form/