Проверьте угловой маршрут маршрута от перехватчика

У меня есть маршрут, настроенный как:

{
    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 быть нулевым.

Как мы получаем активированный маршрут внутри перехватчика?

Есть ли другой способ доступа к path в перехватчике?

Если вопрос кажется неясным, может обновить его с дополнительной информацией.

0 ответов

Я знаю, что это немного поздно.. но следующее решит вашу проблему, были аналогичные проблемы..

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

activRoute.snapshot['_routerState'].url будет содержать ваш '/user/:id/edit/:type'.

Приветствия (у)

Я заставил его работать вот так, заглянув в реализацию

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

Это даст вам весь URL-адрес с параметрами и всем остальным. Подобно:user/234?hasName=true&hasShoes=false

Если в перехватчике активированный маршрут и снимок не загружены с текущим путем или URL, в качестве последнего варианта, вы можете использовать классический window.location

Лучший способ сделать это - сделать это через объект маршрутизатора:

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

Таким образом, вам не нужно получать доступ к скрытым свойствам.

Другие вопросы по тегам