javascript - 如何发出路由器事件
问题描述
我有 2 个模块,一个是 sidenav,我可以在其中选择菜单并希望在content module
where have中显示组件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);
}
sidenav 的父级
<app-sidenav (navigate)="router.navigate($event)"></app-sidenav>
请记住在父组件中公开路由器:
constructor(public router: Router) {}
推荐阅读
- javascript - 根据另一个 [TS/JS] 过滤一组对象
- javascript - React defaultChecked 无线电输入(使用 react-hook-form)
- java - 使用 JSTL 时出现 JasperException
- laravel - 无法从 Homestead 上的 Laravel 6 连接到邮件服务器
- python - _tkinter.TclError:无效的命令名称“.!entry”
- sql - 将列添加到 SQL 表并使用该列的一组固定值分解行
- javascript - 使用包装反应应用程序的优点是什么
与直接使用 javascript 进行突变和查询相比 - c++ - 在构造函数中初始化参数的构造
- reactjs - React Redux 错误:redux.js:275 未捕获错误:操作必须是普通对象。相反,实际的类型是:'Promise'
- javascript - JavaScript:是否可以创建一个数组,每个数组元素都有多个值?