I have 2 sibling components that need to communicate:
You can use a template variable to get a reference to the sibling.
<app-controls> has an output where it emits events when a button is clicked you can do:
<app-controls (buttonClicked)="main.doSomething($event)"></app-controls> <app-main #main></app-main>
or you can pass a reference to a
@Input() siblings; and then call methods on it:
<app-controls [sibling]="main"></app-controls> <app-main #main></app-main>