2016-08-26 6 views
9

を使用して、angular2プロジェクトをRC5にアップグレードしました。angular2 RC5で経路パラメータを取得する方法

const appRoutes: Routes = [ 
    { path: 'project-manager', component: ProjectManagerComponent }, 
    { path: 'designer/:id', component:DesignerComponent } , 
    {path: '',redirectTo: '/project-manager',pathMatch: 'full'} 
]; 

と私はとしてrouterLinkを使用してデザイナーのコンポーネントにリダイレクトしています:

私は以下のようにルーティングを提供しているそれが正常にリダイレクトなっていると私はのparam値を見ることができています今

<a [routerLink]="['/designer',page._id]"><i class="fa fa-eye fa-fw"></i></a> 

ブラウザのアドレスバーに

ここで私が知りたいのは、angular2 RC5のDesignerComponentでこのパラメータにアクセスする方法です。

答えて

13

constructor(private route: ActivatedRoute){    
} 

以下のようngOnInit内部の変化をparamsはして購読をパラメータ。

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

... 

constructor(private route: ActivatedRoute, ...) { 
} 

value: any; // -> wanted parameter (use your object type) 

ngOnInit() { 
    // get URL parameters 
    this.route.params.subscribe(params => { 
     this.value = params['id']; // --> Name must match wanted parameter 
    }); 
} 

はあなたにもそれを必要とする場合@angular/coreからOnInitをインポートすることを忘れないでください。


EDITED:NG2ルータは自分で自分のサブスクリプションを管理しているため、サブスクリプションを回避するために

  • クリーンアップ。
  • AOTコンパイルを破らないように、HTMLで使用される可能性のあるプライベート変数を使用しないでください。
  • 廃止されたため、ROUTER_DIRECTIVESが削除されました。
+2

私は混乱しています。現在アクティブなURLの固定値とは何かを購読する必要があるのはなぜですか?それは変わるようではない。私はこの種のものを扱うために@Inputのようなものはないと驚いています。 –

+1

更新:興味のある人は:OnDestroy'イベントでオブザーバブルとサブスクライブからサブスクリプションを取得する必要はありません。ルートはそれを自分で管理します。 実際に 'this.sub'をカットすることができます。 –

+0

最新の情報に更新されました。 –

4

最初にインポートActivatedRoute@angular/routerからインポートします。

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

それは以下のようにコンストラクタのアクセス:私はあなたを操作するためのルータからActivatedRouteを使用する必要があると考えてい

ngOnInit() { 
    this.route.params.subscribe(params => { 
    if (params['id']) { 
    } 
    }); 
} 
関連する問題