2016-10-13 5 views
1

私のアプリケーション内で、状況依存のヘルプテキストをロードしたいので、アプリケーションの現在の位置に基づいてテキストを読み込みます。 しかし、訪問者がidパラメータを持つ場所にいる場合、IDごとに個別のヘルプテキストを読み込む必要はなく、一般バージョンのみを読み込む必要があります。私は解析されていないパスがこの目的に最も適していることを再確認します。 Angular2:現在のルートの解析されていないバージョンを取得

clearificationのようないくつかのコード

現在のルート: /ページ/ 1はPageComponentに解決:私はこのPageComponentのヘルプテキストを表示したい

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

。ですから、ヘルプテキストを取得するには、解析しないパス(/ page /:pageid)を変数として使用したいと思います。

私は現時点でRC4を使用していますが、解決策へのすべての方向を歓迎します。

編集

コンソールで「アプリ」の結果の
{ 
    path: 'app', 
    component: Core, 
    children: [ 
     {path: 'page/:pageid', component: PageComponent} 
    ] 
} 

:しかし、実際に与えられたルートは、子のルートで、通常は以下のコードは

constructor(public route: ActivatedRoute) {} 

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

を動作するはずと思われます。

編集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. 、URLの変更上のURL(doc
  3. を入手ルートのパス上のループ、パターンマッチ 場合、いくつかのより多くのコアのjsファイルに掘った後のURLに
0

を参照してください、私が来たのはrouter.events次のソリューション:これはMを与えた

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 + "')"; 
}; 

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

掘削は、@角度/ルーター/ SRC/router_state.jsにしました上記の解決策のための十分な情報。

関連する問題