2016-10-28 2 views
1

Я ищу способ доступа к маршруту, который был загружен.Как получить текущий маршрут с его опциями в директивах angular2

в первоначально изменения маршрута могут быть подписываться на маршрутизаторе событий, как следующим образом:

@Directive({ selector: '[myDirective]' }) 
export class TestDirective { 

    constructor(private _router: Router) { 
     this.doAction() 
    } 


    doAction(): void { 
     this._router.events 
      .filter((event: Event) => event instanceof NavigationEnd) 
      .subscribe(event => { 
       /// ... get current route data 
      }) 
     } 

    } 
} 

главный вопрос заключается в том, что, как получить текущие данные маршрута в подписываться() ???

в угловых 2 документах и ​​с поиском результата не найдено.

ответ

2

У меня есть решение для вашей проблемы, пожалуйста, попробуйте это.

import { Router, ActivatedRoute } from '@angular/router'; 

currentRoute:any; 

constructor(private router: Router, private activatedRoute: ActivatedRoute,) {} 


    ngOnInit() { 
    this.router.events.subscribe((url) => { 
     this.currentRoute = url; 
     console.log(this.currentRoute); 
    }); 
    } 

вы получите консоль как пыльник enter image description here

Получение значений из запроса Parms

import { Router, Route, ActivatedRoute } from '@angular/router'; 

queryParams:string; 

constructor(private router: Router, private actRoute: ActivatedRoute) 
{ 
    this.queryParams= 
    this.router.routerState.snapshot.root.queryParams["oauth_token"]; 
} 

С помощью этого вы получите значение oauth_token к queryParams. Я думаю, что это кажется хорошо для вас

NB: Ваш URL будет как http://example.com?oauth_token=123

+0

Я хочу, чтобы принять значение (route.data) !! ваш путь может сделать Router.config() и получить поиск в возвращаемом объекте для простого пути, например «/ login», но сложно разобрать URL-адрес с необязательными параметрами, такими как «/ heroes /: id» или «/ posts /: post_id/comments /: comment_id " –

+0

Вам нужно получить параметр запроса rite? K я обновлю ответ –

+0

нет !!! например, я хочу передать данные в конфигурации маршрута с именем hasHeader: (true | false), а затем в директиве при каждом изменении маршрута мне нужно получить эти данные из загруженного маршрута !!! параметры запроса не будут хорошими !! –