在写这几行访问活动子路线,所选答案似乎不工作了。
如果您希望在路线更改时收到通知,您可以订阅Router.events
observable。例如,NavigationEnd
事件的URL存储为一个属性:
this.router.events.filter(evt => evt instanceof NavigationEnd)
.map(evt =>evt.url)
.subscribe(url=>console.log(url));
如果要比较当前路线孩子路径 - 让我们说"child"
- 。您可以使用Router.isActive()
方法:
let events = this.router.events;
events.filter(evt => evt instanceof NavigationEnd)
.map(() =>{
let exact=true;
let childRoute=this.router.createUrlTree(["child"], {relativeTo: this.route}
return this.router.isActive(childRoute,exact);
})
.subscribe(active=>console.log(`child route is active :${active`));
注:
this.router
是一个Router
实例
this.route
是ActivatedRoute
exact
一个实例是用来做精确匹配:如果路由是"child/grand-child"
this.router.isActive(route,true)
会返回假
非常感谢:) –
'属性'儿童'不存在'RouterState''类型...:/ – Inigo
不确定是否因为此答案发布而发生了变化,但儿童是ActivatedRoute的属性,而不是路由器 – Inigo