2016-01-25 15 views
5

TypeScript kullanarak Angular2 Beta'da RouteData kullanmayı denediğimde sorunlarla karşılaşıyorum.Angular2 Beta'da RouteData nasıl kullanılır?

Kurucuda enjekte ve düzgün ben No provider for RouteData! (App -> RouteData) alıyorum

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

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

içe aktarın. Bu

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

gibi bileşen açıklama içine dahil ederseniz

bu hatayı alıyorum: Cannot resolve all parameters for RouteData(?). Make sure they all have valid type or annotations.

+0

Sağlayıcılar aracılığıyla 'RouteData'yı enjekte etmeyin. Angular2 sizin için her şeyi yapar. –

+0

"ROUTER_PROVIDERS" öğesini mi kastediyorsunuz? O zaman nasıl derleme yapalım? – gerric

+0

['ROUTER_PROVIDERS'] (https://github.com/angular/angular/blob/master/modules/angular2/router.ts#L84)' RouteData' veya 'RouteParams' sağlamıyor, bu nedenle bunlar değil kök bileşeninde kullanılabilir. Onlar ['RouterOulet'] tarafından sağlanmıştır (https://github.com/angular/angular/blob/master/modules/angular2/src/router/router_outlet.ts#L60), bu yüzden yüklü herhangi bir bileşende mevcut olacaklar yönlendirme yoluyla. –

cevap

5

RouteData Ebeveyninizin bileşeninde RouteConfig tarafından Çocuğunuz bileşenine veri sağlar. AppComponent'inizde kullanmanız gerekmez.

böyle senin AppComponent bir RouteConfig vermelidir kullanmak için:

Kişisel ChildComponent sonra RouteData enjekte ve bunun gibi rotada parametre setini almak yapabiliyor olmalıdır
@RouteConfig([ 
    {path: '/child', name: 'Child', component: ChildCmp, data: {item: 'hi there'}} 
]) 

:

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