Navigation Mechanism is the way to redirect a new web page, new record, edit record, record detail page etc. without using Apex Class.
We have created one Lightning Web Component named “lightningNavigation“.
Step 1: Need to update the lightningNavigation.js-meta.xml file to set the visibility in Lightning App Builder.
lightningNavigation.js-meta.xml
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="lightningNavigation">
<apiVersion>45.0</apiVersion>
<isExposed>true</isExposed>
<targets>
<target>lightning__AppPage</target>
<target>lightning__RecordPage</target>
<target>lightning__HomePage</target>
</targets>
</LightningComponentBundle>
Step 2: Need to write html file.
lightningNavigation.html
<template>
<lightning-card title="Navigation System">
<lightning-layout multiplerows="true" verticalalign="center">
<lightning-layout-item padding="around-small" size="3">
<lightning-button variant="brand" label="Current Tab" title="Current Tab" onclick={navigateCurrentTab}>
</lightning-button>
</lightning-layout-item>
<lightning-layout-item padding="around-small" size="3">
<lightning-button variant="brand" label="Object Home" title="Object Home" onclick={navigateToObjectHome}>
</lightning-button>
</lightning-layout-item>
<lightning-layout-item padding="around-small" size="3">
<lightning-button variant="brand" label="List View" title="List View" onclick={navigateToListView}>
</lightning-button>
</lightning-layout-item>
<lightning-layout-item padding="around-small" size="3">
<lightning-button variant="brand" label="View Record" title="View Record" onclick={navigateToRecordView}>
</lightning-button>
</lightning-layout-item>
</lightning-layout>
<lightning-layout multiplerows="true" verticalalign="center">
<lightning-layout-item padding="around-small" size="3">
<lightning-button variant="success" label="New Record" title="New Record" onclick={navigateToNewRecord}>
</lightning-button>
</lightning-layout-item>
<lightning-layout-item padding="around-small" size="3">
<lightning-button variant="success" label="Edit Record" title="Edit Record" onclick={navigateToRecordEditPage}>
</lightning-button>
</lightning-layout-item>
<lightning-layout-item padding="around-small" size="3">
<lightning-button variant="success" label="Related List View" title="Related List View" onclick={navigateToRelatedList}>
</lightning-button>
</lightning-layout-item>
<lightning-layout-item padding="around-small" size="3">
<lightning-button variant="success" label="Web Page" title="Web Page" onclick={navigateToWebPage}>
</lightning-button>
</lightning-layout-item>
</lightning-layout>
</lightning-card>
</template>
Step 3: We have updated the JS file according to the navigation procedure.
lightningNavigation.js
import { LightningElement } from 'lwc';
import { NavigationMixin } from 'lightning/navigation';
export default class LightningNavigation extends NavigationMixin(LightningElement) {
navigateCurrentTab(){
this[NavigationMixin.Navigate]({
type: 'standard__navItemPage',
attributes: {
apiName: "LWC",
}
});
}
navigateToObjectHome(){
this[NavigationMixin.Navigate]({
type: 'standard__objectPage',
attributes: {
"objectApiName": "Contact",
"actionName": "home"
}
});
}
navigateToListView(){
this[NavigationMixin.Navigate]({
type: 'standard__objectPage',
attributes: {
"objectApiName": "Contact",
"actionName": "list"
},
state: {
filterName: 'Recent'
}
});
}
navigateToNewRecord() {
this[NavigationMixin.Navigate]({
type: 'standard__objectPage',
attributes: {
objectApiName: 'Contact',
actionName: 'new'
}
});
}
navigateToRecordView() {
this[NavigationMixin.Navigate]({
type: 'standard__recordPage',
attributes: {
recordId: "0030o00002dCDi7AAG",
objectApiName: 'Contact', // objectApiName is optional
actionName: 'view'
}
});
}
navigateToRecordEditPage() {
// Opens the Account record modal
// to view a particular record.
this[NavigationMixin.Navigate]({
type: 'standard__recordPage',
attributes: {
recordId: "0030o00002dCDi7AAG",
objectApiName: 'Contact', // objectApiName is optional
actionName: 'edit'
}
});
}
navigateToRelatedList() {
this[NavigationMixin.Navigate]({
type: 'standard__recordRelationshipPage',
attributes: {
recordId: '0010o00002Dw6eGAAR',
objectApiName: 'Account',
relationshipApiName: 'Contacts',
actionName: 'view'
}
});
}
navigateToWebPage() {
this[NavigationMixin.Navigate]({
type: 'standard__webPage',
attributes: {
url: 'https://www.salesforce.com'
}
})
}
}
Step 4: Then, we have added the component into the Lightning App Page.
Result

