2016-10-14 5 views
0

過去のルートから逃れる:角度2は、ルータのパラメータは、私はこのように私のアプリで設定したURLの構造を持っている

app.com/project/:id/person/:id/task/:id

私は/ルーティングが正常に動作し、私は現在のルートのIDをつかんでいます持っていますコンポーネント:

this._params.snapshot.paramsここで、_params = ActivatedRouteです。

私の質問は:どのようにして、プロジェクトIDまたは人物IDを取得できますか? (私はブレッドクラムバーに必要です)

ボーナスの質問:私はwindow.location.pathnameでこれをつかんで、手動でIDを引き抜こうとしました。しかし、コンポーネント/ビューがレンダリングされた後に起動するライフサイクルフックは見つかりません。テンプレートがレンダリングされる前、またはコンポーネントが削除されたあと(移動中のように)、私が試したすべてのものが起動しました。これにライフサイクルフックがありますか?

ありがとうございました。

+0

[ActivatedRouteSnapshot](https://angular.io/docs/を見てみましょうts/latest/api/router/index/ActivatedRouteSnapshot-interface.html)ドキュメント。 'parent' /' root'/'pathFromRoot'/etcのプロパティを使って、ルートツリーをトラバースすることができます。プロジェクトのIDが必要です。 – Sasxa

答えて

0

あなたは子ルート内this._params.parent.paramsを使用して、親ルートのparamを取得することができますが、このようにサブスクライブ:

this._params 
      .params 
      .subscribe(params => { 
       this._params.parent.params 
        .subscribe(paramsParent => { 
         // Get parent route param 
         this.id = paramsParent['id']; 

         // Get child route param 
         this.childId = params['id']; 
         this.task = params['task']; 
        }); 
      });