2016-08-14 169 views
10

升級到Angular 2 RC5(來自RC4)後,似乎我不能再將ActivatedRoute注入到我的組件中。沒有供應商ActivatedRoute - Angular 2 RC5

原始例外:沒有ActivatedRoute的提供者!

下面是相關的代碼:

import { Component } from '@angular/core'; 

import { 
    ActivatedRoute 
} from '@angular/router'; 

declare var module: { 
    id: string; 
}; 

@Component({ 
    moduleId: module.id, 
    selector: 'mds-app', 
    templateUrl: 'app.component.html', 
    styleUrls: [ 
     'app.component.css' 
    ], 
    directives: [] 
}) 
export class AppComponent { 

    constructor(private _route: ActivatedRoute) { 
    this._route.params.subscribe(params => console.log(_route)); 
    } 
} 

,這裏是我的app.module.ts

import { NgModule }  from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { CommonModule } from '@angular/common'; 
import { Routes, RouterModule } from '@angular/router'; 

import { AppComponent } from './app.component'; 

import { 
    routing, 
    appRoutingProviders 
} from './app.routing'; 

@NgModule({ 
    imports:  [ BrowserModule, CommonModule, RouterModule ], 
    declarations: [ AppComponent ], 
    bootstrap: [ AppComponent ], 
    providers: [ appRoutingProviders ] 
}) 
export class AppModule { } 

我查了「遊的英雄」的例子,他們做同樣的事情,有是ActivatedRoute沒有供應商聲明所以這裏發生了什麼我想知道?

回答

20

我正在瀏覽GitHub上的Angular 2問題,並從純粹的運氣中找到了上述問題的解決方案(請參閱here)。

我需要添加routing(見上import)以importsNgModule,即

@NgModule({ 
    imports:  [ BrowserModule, CommonModule, RouterModule, routing ], 
    declarations: [ AppComponent ], 
    bootstrap: [ AppComponent ], 
    providers: [ appRoutingProviders ] 
}) 

似乎角2的錯誤信息只是得到了更多的混亂比他們已經被。

我希望這個答案對某人有用,我正準備把我的頭髮拉出來。

編輯:受歡迎的請求,這裏是一個導入的routing(關閉我的頭頂上,因爲我下週工作,讓我知道在評論中是否有任何問題)的代碼片段:

app.routing.ts:

export routes: Routes = [ 
    { path: 'sales', component: SalesComponent } 
]; 

export routing = RouterModule.forRoot(routes); 

,並在您app.module.ts你導入此如下:

import { routing } from 'app.routing' 
+1

「路由」的正確導入是什麼?我似乎無法找到它 – michali

+1

這是導出的'RouterModule',你可以寫'imports:[RouterModule.forRoot(routes)]'其中'routes'是'routes:Routes = [....]來自'app.routing.ts'。 –

3

如果在單元測試中出現此錯誤,則需要導入RouterTestingModule