Как я могу получить путь URL-адреса с параметрами для его сопоставления, чтобы проверить доступ в Angular4 +? - PullRequest
0 голосов
/ 06 сентября 2018

URL: http://localhost:4200/#/users/company/5263/12

Компонент: UserDetailsComponent

Я добавил этот маршрут в мой user-details-routing.module.ts

{
    path: "company/:companyId/:userId"
    component: UserDetailsComponent,
    canActivate: [AdminGuard]
}

Теперь мне нужно это значение ниже в моем файле охраны

Пользователи / компании /: CompanyID /: * 1012 идентификатор пользователя *

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;        
    }

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Я получил полный URL-адрес маршрутизации

т.е. пользователи / компании /: CompanyID /: * идентификатор пользователя 1004 *

по следующей строке кода,

  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

Надеюсь, это поможет.

0 голосов
/ 06 сентября 2018

Вы можете получить такие параметры запроса, используя 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 :::: http://localhost:4200/product/productDetails/79

У меня вывод URL такой: ::: "/ product / productDetails / 79"

Мой вывод urlSegment выглядит следующим образом ::: "productDetails /: id"

Надеюсь, это сработает.

...