>我有 2 个模块,一个是侧导航,我可以在其中选择菜单并希望在content module
中显示组件,其中有router-outlet
。我想知道最好的方法是什么?有一些router event
我可以在内容模块中subscribe
?因为我将使用service
来emit
组件和subscribe event in router-outlet
组件,但我想这不是最佳实践。像这样:
Service:
private emit = EventEmitter<string>
emit(component: string): void {
this.emit.emit(component)
}
在组件中,我只是订阅service emit
并使用router.navigate
在router-outlet
中显示组件.希望有人可以帮助我=(。谢谢
如果我没看错的话:
侧导航
@Output() navigate: EventEmitter<string[]> = new EventEmitter();
emit (route: string[]) {
this.navigate.emit(route);
}
侧导航的父级
<app-sidenav (navigate)="router.navigate($event)"></app-sidenav>
请记住在父组件中公开路由器:
constructor(public router: Router) {}
子组件 .HTML
<app-child
[formGroup]="formChild"
(navigate)="onNavigate($event)"
></app-child>
TS
@Output() navigate: EventEmitter<string[]> = new EventEmitter();
route = ['yourUrl'];
onNavigate(route: string[]) {
this.route = route;
this.navigate.emit(route);
//console.log(route);
}
父组件
goBack(){
this.router.navigate(['yourRoute']);
}
希望对您有所帮助!