Saturday 9 January 2021

                                 Calling Child Component Method Using Parent :

Example  shows how to call child component method from parent using template.querySelector.

  • findLegend -> Method in childComponent
  • Master Blaster Sachin Tendulkar -> Its parameters passing to findLegend Method
  • In this child component method, findLegend method exposed as api method property.

ParentComponent4.html

<template>
    <lightning-card title="Calling child comp from Parent method" icon-name="custom:custom14">
        <c-child-component4 ></c-child-component4>
    <lightning-button label="Find Cricket Legend Name"
                      onclick={fireEvent}
    >
    </lightning-button>
</lightning-card>
</template>

Js

import { LightningElement } from 'lwc';

export default class ParentComponent4 extends LightningElement {
    //Calling child method 
    fireEvent(){
        //Calling child method from parent
        this.template.querySelector("c-child-component4 ").findLegend('Master Blaster Sachin Tendulkar');

    }
}

xml:

<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>50.0</apiVersion>
    <isExposed>true</isExposed> 
    <targets>
        <target>lightning__AppPage</target>
        <target>lightning__RecordPage</target>
        <target>lightning__HomePage</target>
    </targets>
</LightningComponentBundle>

childComponent4.html

<template>
  
    <p> Do you would like to know whos the legend of cricket? </p> <br/> 
    <b> Click on below button to get Legend Name</b>  <br/> 
     <p> Legend Name: <b> {cricketerName} </b></p>
</template>

Js

import { LightningElement,api } from 'lwc';

export default class ChildComponent4 extends LightningElement {
    @api cricketer;
    cricketerName;
    //Decorate method with apI property
    //Publicly expose this method
    //Otherwise it becomes private method
    @api findLegend(Name){
       this.cricketerName =Name;
    }
}

xml

<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>50.0</apiVersion>
  <isExposed>true</isExposed> 
    <targets>
        <target>lightning__AppPage</target>
        <target>lightning__RecordPage</target>
        <target>lightning__HomePage</target>
    </targets>
</LightningComponentBundle>

No comments:

Post a Comment