运行时异常:"没有ReportService的提供者"

时间:2016-11-03 03:52:36

标签: angular angular2-services

我正在重新审视我在VS2015网络项目中为ng2应用启动的设置。它在某一点上起作用。该应用程序使用Typescript并按预期构建。例如,它构建时没有错误但是如果我在ts中放置随机字符就会失败,因此ts似乎按预期构建。

我在应用程序中有一个ReportService,但我注释掉了所有引用,我仍然在帖子标题中收到运行时错误。首先,我想简单地注释掉ReportService引用,让页面无错误地加载,然后重新引入ReportService。知道我在这里可能缺少什么吗?

1 个答案:

答案 0 :(得分:0)

No provider for xxx经常出现在您拥有自己的组件的module未提供服务的情况下,或者由module导入的module提供的服务。

示例:

import { NgModule } from "@angular/core";
import { MyService } from "./my.service";
import { MyComponent } from './my.component';

@NgModule({
   declarations: [ MyComponent ],
  providers: [ MyService ]
})
export class MyModule {}

现在,您可以在MyService中使用MyComponent

import { Component } from "@angular/core";
import { MyService } from "./my.component";

@Component()
export class MyComponent {
    constructor(private service: MyService) {}

    public someMethod(): void {
        this.service.someMethod();
    }
}

您也可以从module导出该服务,以便在其他模块中使用它:

import { NgModule } from "@angular/core";
import { MyService } from "./my.service";
import { MyComponent } from './my.component';

@NgModule({
  declarations: [ MyComponent ],
  providers: [ MyService ],
  exports: [ MyService ]
})
export class MyModule {}

现在,您可以在导入MyService的任何地方使用MyModule

import { NgModule } from "@angular/core";
import { MyModule } from "./my.module";
import { AnotherComponent } from './another.component';

@NgModule({
  imports: [ MyModule ]
  declarations: [ AnotherComponent ],
})
export class MyModule {}


import { Component } from "@angular/core";
import { MyService } from "./my.component";

@Component()
export class AnotherComponent {
    constructor(private service: MyService) {}

    public anotherMethod(): void {
        this.service.someMethod();
    }
}