首页 > 解决方案 > 如何发出路由器事件

问题描述

我有 2 个模块,一个是 sidenav,我可以在其中选择菜单并希望在content modulewhere have中显示组件router-outlet。我想知道最好的方法是什么?有一些router event我可以subscribe在内容模块中使用的地方吗?因为我将使用service组件emitsubscribe event in router-outlet组件,但我想这不是最佳实践。像这样的东西:

Service:
private emit = EventEmitter<string>
emit(component: string): void {
 this.emit.emit(component)
}

在组件中,我只是订阅service emit并用于router.navigaterouter-outlet. 希望有人可以帮助我=)。谢谢

标签: javascriptangularroutereventemitterrouter-outlet

解决方案


如果我理解正确:

西德纳夫

@Output() navigate: EventEmitter<string[]> = new EventEmitter();

emit (route: string[]) {
  this.navigate.emit(route);
}

sidenav 的父级

<app-sidenav (navigate)="router.navigate($event)"></app-sidenav>

请记住在父组件中公开路由器:

constructor(public router: Router) {}

推荐阅读