2016-07-05 26 views
3

美好的一天。我想創建一個簡單的tabmenu,就像primeng的教程,我只想顯示它。但我得到了「沒有提供路由器!」例外。 此我們組件與tabmenu:p-tabMenu拋出「沒有提供給路由器!」例外

<div class="ui-g"> 
    <h1>Heeey!</h1> 
    <p-tabMenu ([ngModel])="menuItems"></p-tabMenu> 
</div> 


@Component({ 
    selector: 'test', 
    templateUrl: './Views/test.html', 
    directives: [ROUTER_DIRECTIVES, DataScroller, DataGrid, Panel, TabMenu], 
    styleUrls: ['../../Styles/EntranceStyle.css'], 
    providers: [Http, HTTP_PROVIDERS] 
}) 

export class TestComponent implements OnInit { 
    public _tests: TestModel[] = new Array<TestModel>(); 
    public products: TestModel[] = new Array<TestModel>(); 

    private menuItems: MenuItem[]; 

    ngOnInit() { 

     this.menuItems = [ 
      { label: 'Coffee'}, 
      { label: 'Sweets'}, 
      { label: 'Salads'}, 
     ]; 
    } 
} 

我宣佈ROUTER_PROVIDERS在開機:bootstrap(AppComponent, [ROUTER_PROVIDERS, HTTP_PROVIDERS, AUTH_PROVIDERS, provide(LocationStrategy, {useClass: HashLocationStrategy})]);

+0

你使用哪種版本Angular2的?有關路由的最新版本有一些變化... –

+0

@ThierryTemplier版本是2.0.0-rc.1 – Amelina

回答

3

首先,你應該更新(這兩個項目仍處於開發和路由器已經改變,最近增強),以最新primeng以及相應的支持angular2版本的日期;這意味着:primeng-beta9angular2-rc3(2016年7月)。

然後,你需要創建一個RouterConfig,在文件app.routes.ts

export const routes: RouterConfig = [ 
    {path: '/', component: MyComponent} 
] 

export const APP_ROUTER_PROVIDERS = [ 
    provideRouter(routes) 
]; 

,然後將它們添加到boot.ts

bootstrap(AppComponent, [ 
    APP_ROUTER_PROVIDERS, 
    disableDeprecatedForms(), 
    provideForms(), 
    provide(LocationStrategy, {useClass: HashLocationStrategy}) 
]); 

AppComponent你需要指定路由器指令:

@Component({ 
    selector: 'my-selector', 
    templateUrl: 'my.html', 
    directives: [ROUTER_DIRECTIVES] 
}) 
export class AppComponent { 
//... blahblahblah 
} 

請記得在<head>中添加<base href="/">

來源:https://angular.io/docs/ts/latest/guide/router.html

+0

好的答案!有一件事,你可以添加「」,或者你可以添加「提供(APP_BASE_HREF,{useValue:'/'})」到引導程序。 另外,請小心更新庫,閱讀文檔並檢查它是否不會破壞您的項目。 我會離開這裏演示http://plnkr.co/edit/zQ43rV?p=preview :) –

相關問題