我的路径路径配置为:
apache
我想从拦截器到达我可以从激活的路径访问的路径:
{
path: 'user/:id/edit/:type',
component: UserEditTypeComponent,
},
这会导致在控制台中返回此路径constructor(private activatedRoute: ActivatedRoute) {
}
ngOnInit() {
console.log(this.activatedRoute.routeConfig.path);
}
。
我想从拦截器获得相同的路径,我尝试过:
user/:id/edit/:type
这会将错误返回为:intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
let ar = this.injector.get(ActivatedRoute);
console.log(ar.routeConfig.path);
}
。我删除了路径并进行了测试,发现Cannot read property 'path' of null
为空。
我们如何在拦截器中获取激活的路线?
是否有其他方法可以访问拦截器中的routeConfig
?
如果问题似乎不清楚,可以用更多信息更新它。
答案 0 :(得分:2)
偷看实施后,我得到了这样的效果
constructor(private router: Router) {
console.log(this.router.routerState.snapshot.url);
}
这将为您提供带有参数和所有内容的整个url。
像:user/234?hasName=true&hasShoes=false
答案 1 :(得分:1)
我知道这有点晚了..但是以下将解决您的问题,有类似的担忧。
constructor(private activatedRoute: ActivatedRoute) {
console.log(activatedRoute.snapshot['_routerState'].url);
}
activatedRoute.snapshot ['_ routerState']。url将包含您的'/ user /:id / edit /:type'。
干杯(y)
答案 2 :(得分:0)
如果在拦截器中激活的路由和快照未加载当前路径或url,作为最后选择,您可以使用经典的window.location
答案 3 :(得分:-1)
做到这一点的最佳方法是通过路由器对象来实现:
constructor(private router: Router) {
console.log(this.router.routerState.snapshot);
}
这样,您不必访问隐藏的属性。