2016-08-14 176 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