Search code examples
angularangular-components

How can I access from a child component to another child component in Angular 4


I have a parent component and inside there are 2 different child components. I need to call the second child component's function from the first child component when I click a link in the first child component.

So here is a basic diagram to explain better:

enter image description here


Solution

  • You could archieve this by means of ViewChild and Output

    For example:

    @Component({
      template: `
         <child-one (clicked)="handleClick()"></child-one>
         <child-two></child-two>
      `
    })
    export class ParentComponent {
       @ViewChild(ChildOneComponent)
       childOne: ChildOneComponent;
    
       handleClick(){
        this.childOne.doSomething();
       }
    }
    

    In this case:

    • clicked is an Ouput property of ChildOneComponent
    • doSomething is a public method

    Another approach only ussing Output and a template variable

    @Component({
      template: `
         <child-one (clicked)="childTwo.doSomething()"></child-one>
         <child-two #childTwo></child-two>
      `
    })
    export class ParentComponent {
       
    }