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:
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 methodAnother 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 {
}