检查拦截器的角度路线

Pal*_*diN 5 angular angular-activatedroute

我有一个配置为的路由路径:

{
    path: 'user/:id/edit/:type',
    component: UserEditTypeComponent,
},
Run Code Online (Sandbox Code Playgroud)

我想到达拦截器的路径,可以从激活的路径访问该拦截器,如下所示:

constructor(private activatedRoute: ActivatedRoute) {
}

ngOnInit() {
    console.log(this.activatedRoute.routeConfig.path);
}
Run Code Online (Sandbox Code Playgroud)

这将导致在user/:id/edit/:type控制台中返回此路径。

我想从拦截器获得与我尝试的相同的路径:

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    let ar = this.injector.get(ActivatedRoute);
    console.log(ar.routeConfig.path);
}
Run Code Online (Sandbox Code Playgroud)

这将返回错误为:Cannot read property 'path' of null。我已删除路径并进行测试,发现routeConfig为空。

我们如何在拦截器内部获得激活的路线?

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

如果问题不清楚,可以用更多信息进行更新。

小智 6

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

constructor(private router: Router) {
   console.log(this.router.routerState.snapshot.url);
} 
Run Code Online (Sandbox Code Playgroud)

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


yan*_*nky 5

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

constructor(private activatedRoute: ActivatedRoute) {
    console.log(activatedRoute.snapshot['_routerState'].url);
} 
Run Code Online (Sandbox Code Playgroud)

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