2016-01-25 2 views
5

Ich habe Probleme, wenn ich versuche, in Angular2 Beta mit TypeScript RouteData zu verwenden.Wie benutzt man RouteData in Angular2 Beta?

ich spritze es in den Konstruktor und importieren Sie es richtig

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

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

ich No provider for RouteData! (App -> RouteData) bekommen.

Wenn ich es in die Komponente Anmerkung wie diese

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

umfassen bekomme ich diesen Fehler: Cannot resolve all parameters for RouteData(?). Make sure they all have valid type or annotations.

+0

"RouteData" nicht durch Provider selbst injizieren. Angular2 macht das alles für Sie. –

+0

Sie meinen "ROUTER_PROVIDERS" importieren? Wie kann ich dann das Typoskript kompilieren? – gerric

+0

['ROUTER_PROVIDERS'] (https://github.com/angular/angular/blob/master/modules/angular2/router.ts#L84) stellt weder' RouteData' noch 'RouteParams' zur Verfügung, daher nicht verfügbar in der Root-Komponente. Sie werden von ['RouterOulet'] (https://github.com/angular/angular/blob/master/modules/angular2/src/router/router_outlet.ts#L60) bereitgestellt, sodass sie in jeder geladenen Komponente verfügbar sind durch Routing. –

Antwort

5

Routedata liefert Daten an Ihrem Kind Komponente durch die RouteConfig in Ihrem Stammkomponente. Es sollte nicht notwendig sein, es in Ihrer AppComponent zu verwenden.

es nutzen zu können, eine RouteConfig in Ihrem AppComponent wie diese bieten sollte:

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

Ihre ChildComponent sollte dann Routedata injizieren und in der Lage, die Parameter abgerufen werden eingestellt:

export class ChildCmp { 
    constructor(@Inject(RouteData) private data:RouteData) { 
    this.data.get("item") 
    } 
}