如何获取Url路径及其参数,以便在Angular4+;中检查访问权限;?

如何获取Url路径及其参数,以便在Angular4+;中检查访问权限;?,angular,parameters,router,Angular,Parameters,Router,网址: 组件:UserDetailsComponent 我已将此路由添加到我的user-details-routing.module.ts中 { path: "company/:companyId/:userId" component: UserDetailsComponent, canActivate: [AdminGuard] } 现在我需要这个值在我的保护文件中 用户/公司/:公司ID/:用户ID admin.guard.ts canActivate(ro

网址:

组件:UserDetailsComponent

我已将此路由添加到我的user-details-routing.module.ts中

{
    path: "company/:companyId/:userId"
    component: UserDetailsComponent,
    canActivate: [AdminGuard]
}
现在我需要这个值在我的保护文件中

用户/公司/:公司ID/:用户ID

admin.guard.ts

    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> | boolean {
        this.loaderService.show();
        let url: string = state.url;  
        // Here I need that value
        return true;        
    }
canActivate(路由:ActivatedRouteSnapshot,状态:RouterStateSnashot):Promise |布尔值{
this.loaderService.show();
让url:string=state.url;
//这里我需要这个值
返回true;
}

您可以使用ActivatedRoute获取这样的查询参数,然后将其存储在一个变量中。以下是一个例子:

import {Router, ActivatedRoute, Params} from '@angular/router';
import {OnInit, Component} from '@angular/core';

@Component({...})
export class MyComponent implements OnInit {

  constructor(private activatedRoute: ActivatedRoute) {}

  ngOnInit() {
       let url =   this.activatedRoute.snapshot._routerState.url
       let urlSegment = this.activatedRoute.snapshot.routeConfig.path


  }

}
我有这个url::

我的url输出如下::“/product/productDetails/79”

我的URLSEMENT输出如下::“productDetails/:id”


希望这能奏效。

我得到了完整的路由url

i、 e.用户/公司/:公司ID/:用户ID

通过遵循代码行

  const index = state.url.lastIndexOf(route.pathFromRoot[route.pathFromRoot.length - 1].routeConfig.path.split('/')[0]);
  url = state.url.substring(0, index) + route.pathFromRoot[route.pathFromRoot.length - 1].routeConfig.path;
  // url = users/company/:companyId/:userId

希望这有帮助。

我不需要获取查询参数值。实际上,这里我需要得到匹配路由路径的字符串值,即users/company/:companyId/:userIdI编辑了我的答案,您可以检查。如果有效,请告诉我。我还提供了输出。这件事我已经尝试过了,但它需要在url和URLSEMENT上应用字符串函数,以获得我所需要的内容,即/product/productDetails/:id还有其他方法吗?我需要在canActivate函数中使用此值,没有注入ActivatedRoute。所以这在guardI中不起作用,正如你在我的项目中所说的,但它不起作用。我在AuthGuard中注入了ActivatedRoute,但当它到达断点时,我只得到最后一个url,如“/product”。可能是按照我的想法,它并没有得到实际的url,因为它在更改url之前击中了AuthGuard,所以在激活的路由中,您将得到旧的url。