2016-01-25 6 views
5

TypeScriptを使用してAngular2 BetaでRouteDataを使用しようとすると問題が発生します。Angular2 BetaでRouteDataを使用するには?

私はNo provider for RouteData! (App -> RouteData)を取得していコンストラクタでそれを注入し、適切

import {RouteConfig, Router, RouteData} from 'angular2/router'; 

export class App { 
    constructor(public router: Router, public data: RouteData) { 
     // router works - routedata not 
    } 
} 

をインポートします。

私はこの

@Component({ 
    //.. 
    providers: [RouteData] 
}) 

などのコンポーネントのアノテーションにそれが含まれている場合、私はこのエラーを取得する:Cannot resolve all parameters for RouteData(?). Make sure they all have valid type or annotations.

+0

プロバイダから「RouteData」を自分自身に挿入しないでください。 Angular2はあなたのためにすべてを行います。 –

+0

あなたは 'ROUTER_PROVIDERS'をインポートすることを意味しますか? typescriptをコンパイルするには? – gerric

+0

['ROUTER_PROVIDERS'](https://github.com/angular/angular/blob/master/modules/angular2/router.ts#L84)は' RouteData'と 'RouteParams'を提供しません。ルートコンポーネントで使用できます。それらは['RouterOulet'](https://github.com/angular/angular/blob/master/modules/angular2/src/router/router_outlet.ts#L60)によって提供されるので、ロードされたどのコンポーネントでも利用可能になりますルーティングを介して。 –

答えて

5

RouteDataは、あなたの親コンポーネントでRouteConfigによってあなたの子コンポーネントにデータを提供します。 AppComponentで使用する必要はありません。

@RouteConfig([ 
    {path: '/child', name: 'Child', component: ChildCmp, data: {item: 'hi there'}} 
]) 

をごChildComponentが、その後RouteDataを注入し、このようなルートに設定されたパラメータを取得することができますする必要があります:

export class ChildCmp { 
    constructor(@Inject(RouteData) private data:RouteData) { 
    this.data.get("item") 
    } 
} 
あなたはこのようなあなたのAppComponentでRouteConfigを提供する必要があり、それを使用するには

関連する問題