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

Angular2组件无法在构造函数中接收服务,angular,typescript,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",

我有一个服务定义如下

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的提供程序;区域:角度;任务:承诺;价值:

错误是

No provider for Http
这意味着问题不在于你的服务。问题是您的服务需要使用Http服务,而该服务不存在

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

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

更多解释请参见

当您询问错误时,请张贴错误。完整而准确的错误。@JBNizet我并没有询问错误本身,因为与参考资料相比,语法应该是正确的,但我同意它可能有用。请在5分钟后查看编辑。谢谢你的指点。@JBNizet发布。它的全部内容太大,无法显示,但编辑显示了有趣的部分。啊哈!因此,无法将服务类和组件划分为唯一知道
HttpModule
?我必须把它放在我模块的decorator的imports部分吗?我的意思是,毕竟,我把它导入了服务导入(第2行)。是的。您的服务,因为它是完全无状态的,也可以由根模块提供:为组件的每个实例创建新实例没有实际意义。您可以为这个组件和这个服务创建一个子模块,但我不太明白这一点。不管怎样,你将在任何地方使用Http。有趣的一点。我明白了。我试着用不同的方法来研究什么有效,什么无效,最重要的是,为什么有效或无效。