2016-01-25 38 views
5

Tôi đang gặp sự cố khi cố gắng sử dụng RouteData trong Angular2 Beta bằng cách sử dụng TypeScript.Làm thế nào để sử dụng RouteData trong Angular2 Beta?

tôi tiêm nó trong các nhà xây dựng và nhập nó đúng

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

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

Tôi nhận được No provider for RouteData! (App -> RouteData).

Nếu tôi đưa nó vào chú thích thành phần như thế này

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

tôi nhận được lỗi này: Cannot resolve all parameters for RouteData(?). Make sure they all have valid type or annotations.

+0

Không tự mình tiêm 'RouteData' thông qua nhà cung cấp. Angular2 làm tất cả những gì cho bạn. –

+0

Bạn có nghĩa là nhập 'ROUTER_PROVIDERS'? Làm thế nào tôi có thể nhận được biên dịch chữ sau đó? – gerric

+0

['ROUTER_PROVIDERS'] (https://github.com/angular/angular/blob/master/modules/angular2/router.ts#L84) không cung cấp' RouteData' hoặc 'RouteParams', do đó chúng không có sẵn trong thành phần gốc. Chúng được cung cấp bởi ['RouterOulet'] (https://github.com/angular/angular/blob/master/modules/angular2/src/router/router_outlet.ts#L60), vì vậy chúng sẽ có sẵn trong bất kỳ thành phần nào được tải thông qua định tuyến. –

Trả lời

5

RouteData cung cấp dữ liệu để phần con của bạn bằng các RouteConfig trong thành phần cha mẹ của bạn. Không cần phải sử dụng nó trong AppComponent của bạn.

Để sử dụng nó, bạn nên cung cấp một RouteConfig trong AppComponent của bạn như thế này:

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

sau đó ChildComponent của bạn nên tiêm RouteData và có thể lấy các thông số thiết lập trong con đường như thế này:

export class ChildCmp { 
    constructor(@Inject(RouteData) private data:RouteData) { 
    this.data.get("item") 
    } 
} 
Các vấn đề liên quan