2016-09-01 6 views
1

라우터 버전 3.0.0-beta.2에서 각도 2 버전 rc4를 사용하고 있습니다.angular2 라우터에서 선택적 매개 변수를 가져옵니다.

주어진이 URL : http://localhost:8888/#/test;status=07 상태 선택 매개 변수의 값을 얻고 싶습니다.

console.log("status", this._activatedRoute.snapshot.params['status']); 

를하지만 이것에 대한 정의되지 않은 가지고 : 내가 아는 한이 코드가 작동합니다.

console.log("urlsegment", this._activatedRoute.snapshot['_urlSegment'].pathsWithParams[0].parameters['status']); 

나는 이유를 이해할 수 없다 : 이 코드는 나에게 적절한 가치를 제공하는 것도 재미있다? 내가 뭘 잘못 했니? 두 번째 솔루션은 매우 추악하기 때문에 실제로 사용하고 싶지는 않습니다.

도움이 될 것입니다.

편집 : main.ts :

bootstrap(App, [ 
    APP_ROUTER_PROVIDERS, ..Some other stuff..]).then((appRef) => AppInjector(appRef.injector)); 

app.routes.ts :

export const routes: RouterConfig = [ 
    {path: 'admin', component: FrontComponent, children: [...FrontRoutes]}, 
    {path: '', component: PublicComponent, children: [ ...PublicRoutes]} 
]; 

export const APP_ROUTER_PROVIDERS = [ 
    provideRouter(routes) 
]; 

public.routes.ts :

export const PublicRoutes: RouterConfig = [ 
    {path: '', redirectTo: '/dashboard', terminal: true, canActivate:[CanActivateGuard]}, 
    {path: 'test', component: TestRouterComponent, children: [...TestRoutes]}, 
    {path: 'dashboard', component: DashboardRouterComponent, children: [...DashboardRoutes]}, 
]; 

test.routes.ts :

export const TestRoutes: RouterConfig = [ 
    {path: '', component: TestComponent, canActivate:[CanActivateGuard]}, 
    {path: 'detail/:id', component: TestDetailComponent, canActivate:[CanActivateGuard]}, 
]; 

내가 이동 라우터를 사용하는 방법 :

this._router.navigate(['test', {status:07}]); 
+0

게시하시기 바랍니다 경로와 방법이 현재의 경로를 탐색에 추가 편리한 방법입니다. –

+0

'terminal : true '가'pathMatch :'full''로 바뀌 었습니다. –

+0

대신'queryParams'를 읽어야한다고 생각합니다. –

답변

0

선택적 매개 변수가 특정 경로에 추가됩니다. 부모 나 자식 경로에 추가하면 얻을 수 없습니다.

_activatedRoute.parent.queryParams.subscribe(params => console.log(params['s‌​tatus']));, _activatedRoute.firstChild.queryParams.subscribe(params => console.log(params['s‌​tatus'])); 

parent, firstChild, children는 RC.6