2016-10-13 2 views
1

В моем приложении я хочу загрузить контекстно-зависимые тексты справки, поэтому тексты основаны на текущем расположении приложения. Однако, когда посетитель находится в местоположении с параметром id, отдельный текст справки на идентификатор не должен загружаться, а только общая версия. Я считаю, что путь, не прошедший проверку, лучше всего подходит для этой цели.Angular2: получить непроверенную версию текущего маршрута

Некоторые код, как clearification:

Текущий маршрут: /страница/1 разрешается в PageComponent:

{path: '/page/:pageid', component: PageComponent} 

Я хочу, чтобы показать текст справки для этого PageComponent. Поэтому, чтобы получить текст справки, я хочу, чтобы путь unparsed (/ page /: pageid) был переменным.

Я использую RC4 на данный момент, но все направления к решению приветствуются.

Edit: Кажется, что обычно ниже код должен работать

constructor(public route: ActivatedRoute) {} 

ngOnInit(): void { 
    setTimeout(() => { 
     console.log(this.route.snapshot._routeConfig.path); 
    }); 
} 

Однако, на самом деле данный маршрут является дочерним Маршрут:

{ 
    path: 'app', 
    component: Core, 
    children: [ 
     {path: 'page/:pageid', component: PageComponent} 
    ] 
} 

В результате в «приложение» в консоли ,

Edit 2: близко, но не бросить еще ...

ngOnInit(): void { 
    setTimeout(() => { 
     let state = this.router.routerState; 
     console.log(state.firstChild(state.firstChild(state.root)).toString()); 
    }); 
} 

Результаты в:

Route(url:'page/1', path:'page/:pageid') 

ответ

0

Может быть, вы можете сделать это следующим образом:

  1. Импорт маршрутов
  2. Подписаться на router.events получить URL (doc)
  3. Об изменения URL-адреса, петля на пути маршрутов, см если матч шаблона URL-адрес
0

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

ngOnInit(): void { 
    setTimeout(() => { 
     const state = this.router.routerState; 
     this.url = state.firstChild(state.firstChild(state.root)).snapshot._routeConfig.path; 
    }); 
} 

рытье был в @ угловое/маршрутизатор/SRC/router_state.js:

RouterState.prototype.toString = function() { return this.snapshot.toString(); }; 

... 

ActivatedRouteSnapshot.prototype.toString = function() { 
    var url = this.url.map(function (s) { return s.toString(); }).join('/'); 
    var matched = this._routeConfig ? this._routeConfig.path : ''; 
    return "Route(url:'" + url + "', path:'" + matched + "')"; 
}; 

Это дало м достаточно информации для рассматриваемого решения.

Смежные вопросы