RC5
を使用して、angular2プロジェクトをangular-cli@webpack
にアップグレードしました。
次のようにルーティングを提供しています。
const appRoutes: Routes = [
{ path: 'project-manager', component: ProjectManagerComponent },
{ path: 'designer/:id', component:DesignerComponent } ,
{path: '',redirectTo: '/project-manager',pathMatch: 'full'}
];
そして私はrouterLinkを使用してデザイナーコンポーネントにリダイレクトしています:
<a [routerLink]="['/designer', page._id]"><i class="fa fa-eye fa-fw"></i></a>
これで、リダイレクトが正常に完了し、ブラウザのアドレスバーにパラメータ値が表示されます。
次に、angle2 RC5のDesignerComponentでこのパラメーターにアクセスするにはどうすればよいかを知りたいと思います。
パラメーターを操作するには、ルーターからActivatedRouteを使用する必要があると思います。
import { ActivatedRoute } from '@angular/router';
...
constructor(private route: ActivatedRoute, ...) {
}
// TODO :: Add type
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
をインポートすることを忘れないでください。
N.B:this.route.snapshot.params
を使用して同期的にアクセスすることもできます。
編集済み:
ROUTER_DIRECTIVES
を削除しました。最初に@angular/router
からActivatedRoute
をインポートします。
import { ActivatedRoute } from '@angular/router';
以下のようにコンストラクタにアクセスします。
constructor(private route: ActivatedRoute){
}
以下のようにngOnInit内のparams変更をサブスクライブします。
ngOnInit() {
this.route.params.subscribe(params => {
if (params['id']) {
}
});
}