2016-05-08 6 views
2

私はAngular2をテストするための単純な1つのコンポーネントアプリケーションを作成しようとしていますが、私は非常にアプリケーションコンポーネントのRouteParamsにアクセスしています。AppComponentのRouteParams

これは私がこれまで持っているものです。だから、基本的に私が達成したいものを

@Component({ 
    selector: 'app', 
    template: '<h1>ID: {{id}}</h1>', 
    directives: [ROUTER_DIRECTIVES], 
    providers: [] 
}) 
@RouteConfig([ 
    { path: '/', component: App } 
]) 
class App { 
    private id: string 

    constructor(params: RouteParams) { 
    this.id = params.get('id') 
    } 
} 

bootstrap(App, [ 
    ROUTER_PROVIDERS, 
]) 

ユーザーがhttp://website.com/?id=21に行くことのためのものであり、その後、21ドを表示するには、ウェブサイトのために私は別のを持っている必要があります私のAppComponentにそのコンポーネントへのルートを提供させるか、またはappコンポーネントのルートパラメータにアクセスする方法がありますか?ここで

答えて

0

はどのようRouteConfigへのルートパラメーターここ

{path: '/hero/:id', name: 'HeroDetail', component: HeroDetailComponent}, 

は、ルートとルートパラメーターの完全なビューあなたに

@Component({ 
selector: 'my-app', 
template: ` 
<h1 class="title">Component Router</h1> 
<a [routerLink]="['CrisisCenter']">Crisis Center</a> 
<a [routerLink]="['Heroes']">Heroes</a> 
<router-outlet></router-outlet> 
`, 
directives: [ROUTER_DIRECTIVES] 
}) 
@RouteConfig([ 

{ // Crisis Center child route 
path: '/crisis-center/...', 
name: 'CrisisCenter', 
component: CrisisCenterComponent, 
useAsDefault: true 
}, 

{path: '/heroes', name: 'Heroes',  component: HeroListComponent}, 
{path: '/hero/:id', name: 'HeroDetail', component: HeroDetailComponent}, 
{path: '/disaster', name: 'Asteroid', redirectTo: ['CrisisCenter', 'CrisisDetail', {id:3}]} 
]) 
    export class AppComponent { 

constructor(private router: Router) { 
    this.setUpEvents(); 
} 

private setUpEvents(): void { 
    this.router.subscribe((value: any) => this.onNext(value)); 
} 

private onNext(value: any): void { 
    //uncomment to get the stacktrace 
    //throw new Exception(""); 
    console.log(value); 
} 

} 

the plunker for the example

を持って構成されたアプリからコードであるためでありますルートとルーペパラムが新しいコンテンツの表示をどのように変更するかを確認できます。click here

+0

あなたがやりたいことかもしれないが、それは私がやりたいことはありません。私はただ一つのルートを '/'にして、それに私のappコンポーネントを表示する必要がありますが、URLに与えられたパラメータも読んでください。 –

1

は、これは私がその例のアプリケーションを介して読んだ

constructor(private router:Router, private routeSerializer:RouterUrlSerializer, private location:Location) { 
    router.changes.first().subscribe(() => { 
     let urlTree = this.routeSerializer.parse(location.path()); 
     console.log('serializer', urlTree.children(urlTree.root)[0].segment); 
     // or to get the next segment of the path: 
     // console.log('serializer', urlTree.children(urlTree.children(urlTree.root)[0])[0].segment); 
    }); 
    } 
関連する問題