5

我的路由路径配置为:

{
    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为空。

我们如何在拦截器中获取激活的路由?

还有其他方法可以访问pathin 拦截器吗?

如果问题似乎不清楚,可以用更多信息更新它。

4

4 回答 4

5

我知道这有点晚了..但是以下将解决您的问题,有类似的担忧..

constructor(private activatedRoute: ActivatedRoute) {
    console.log(activatedRoute.snapshot['_routerState'].url);
} 

activatedRoute.snapshot['_routerState'].url将包含您的/user/:id/edit/:type.

于 2019-01-24T14:17:08.620 回答
4

如果在拦截器中激活的路由和快照没有加载当前路径或 url,作为最后的选择,您可以使用经典window.location

于 2019-03-31T19:33:12.337 回答
4

在查看了实现之后,我让它像这样工作

constructor(private router: Router) {
   console.log(this.router.routerState.snapshot.url);
} 

这将为您提供带有参数和所有内容的整个网址。喜欢:user/234?hasName=true&hasShoes=false

于 2020-06-24T12:46:09.973 回答
0

最好的方法是通过路由器对象来做到这一点:

constructor(private router: Router) {
    console.log(this.router.routerState.snapshot);
} 

这样您就不必访问隐藏的属性。

于 2020-05-13T11:10:53.843 回答