typescript - Hur man använder RouteData i Angular2 Beta?


Jag stöter på problem när jag försöker använda RouteData i Angular2 Beta med TypeScript.

Jag injicerar det i konstruktören och importerar det korrekt

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

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

Jag får Ingen leverantör för RouteData! (App -> RouteData).

Om jag inkluderar det i komponentannoteringen på det här sättet

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

Jag får detta fel: Kan inte lösa alla parametrar för RouteData(?). Se till att de alla har giltig typ eller annotationer.

Svar #1

RouteData tillhandahåller data till din barnkomponent via RouteConfig i din föräldrakomponent. Det bör inte finnas något behov av att använda det i din AppComponent.

För att använda det bör du tillhandahålla en RouteConfig i din AppComponent på detta sätt:

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

Din ChildComponent bör då injicera RouteData och kan hämta parametern som är inställd i routen på detta sätt:

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

Relaterade artiklar