在寫這幾行訪問活動子路線,所選答案似乎不工作了。
如果您希望在路線更改時收到通知,您可以訂閱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