检查来自拦截器的角度路径路径

时间:2018-04-09 11:49:01

标签: angular angular-activatedroute

我的路径路径配置为:

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

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

4 个答案:

答案 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);
} 

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