Angular2组件无法在构造函数中接收服务

时间:2017-03-22 22:28:14

标签: angular typescript

我的服务定义如下。

import { Injectable } from "@angular/core";
import { Http } from "@angular/http";

@Injectable()
export class SirService {
  constructor(private http: Http) {
    console.log("The http is: " + http);
  }

  stuff() { return ["uno", "duo", "tress"]; }
}

然后,我将我的组件的提供者设置为这样的服务。

import { Component } from "@angular/core";
import { SirService } from "../app.service";

@Component({
  selector: "demo",
  providers: [SirService],
  template: require("./demo.html"),
  styles: [require("./common.scss")]
})
export class Demo {
  // constructor() {
  constructor(private service: SirService) {
    console.log("Service: " + service);
  }
}

我不确定如何访问服务中的stuff()电话。以上产生的错误告诉我Angular无法找到任何有意义的东西进入我的构造函数。当我使用无参数构造函数时,我没有引用该服务。那种卡在那里似乎很少有例子说明如何为组件而不是模块做这个......(我可能会愚蠢地用谷歌搜索......)

错误信息是巨大的,但这是最相关的部分(据我所知)。

  

未处理的承诺拒绝:没有Http的提供商! ;区域:角;任务:Promise.then;价值:

1 个答案:

答案 0 :(得分:1)

错误是

No provider for Http

这意味着问题不在于您的服务。问题是您的服务需要使用Http服务,并且该服务不存在。

您需要导入提供此服务的HttpModule:

@NgModule({
  // ...
  imports: [BrowserModule, ..., HttpModule]
})
export class AppModule {}

the documentation

中的更多解释