我正在尝试检查父组件中的活动子路由,但我遇到了困难。
我尝试通过这样的方式订阅ActivatedRoute:
class ParentComponent {
constructor(private _route:ActivatedRoute) {}
ngOnInit() {
this._route.data.subscribe(value => console.log(value)});
}
}
我已经在Stack Overflow上阅读了很多线程,但找不到关于父组件子路由的检查和更新的解决方案。
有什么想法吗?
答案 0 :(得分:4)
在编写这些行时,所选答案似乎不再起作用了。
如果您希望在路线更改时收到通知,您可以订阅Router.events
观察点。例如,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)
将返回false 答案 1 :(得分:2)
您可以使用以下代码段访问活动子路由
constructor(private router:Router, private currentActivatedRoute:ActivatedRoute)
// this should be called in ngOnInit
var state = this.router.routerState
var children = state.children(this.currentActivatedRoute)