Angular обеспечивает очень мощную концепцию Input, Output
.Пожалуйста, рассмотрите возможность использования Input, Output and EventEmitter
с этим всем, что вы можете перенаправить событие от одного компонента к другому компоненту.
Пожалуйста, посмотрите на эту демонстрационную ссылку .
// drawer.component.ts
export class DrawerComponent implements AfterViewInit, OnChanges {
@ViewChild('sidenav') public sidenav: MatSidenav;
@Input()
openNav: boolean;
ngOnChanges(): void {
console.log('ngOnChanges', this.openNav);
if (this.openNav) {
this.sidenav.open();
} else {
this.sidenav.close();
}
}
}
// header.component.ts
export class HeaderComponent implements OnInit {
title: string = "Dashboard";
@Output()
open: EventEmitter<boolean> = new EventEmitter();
clickMenu() {
this.open.emit(true);
}
}
// layouts.component.html
<div class="app-wrapper">
<app-drawer [openNav]="isOpen"></app-drawer>
<app-header (open)="navOpen($event)"></app-header>
<div>
// layouts.component.ts
export class LayoutsComponent implements OnInit {
isOpen: boolean;
navOpen($event): void {
this.isOpen = !this.isOpen;
console.log('navOpen', $event);
}
}
также при необходимости используйте соответствующие крючки жизненного цикла компонента.