Angular 2依赖项注入不工作

Angular 2依赖项注入不工作,angular,typescript,dependency-injection,Angular,Typescript,Dependency Injection,你好,我已经试着弄明白了大约两天了,现在我看不出哪里出了问题。我遇到一些错误,我不知道如何调试 AppService没有提供程序 我在一个垃圾桶里重新创造了这个 我认为问题在于我没有注册AppService anyware @NgModule({ imports: [ BrowserModule ], declarations: [ App ], bootstrap: [ App ] }) export class AppModule {} 您必须将AppService添加到提供程

你好,我已经试着弄明白了大约两天了,现在我看不出哪里出了问题。我遇到一些错误,我不知道如何调试

AppService没有提供程序

我在一个垃圾桶里重新创造了这个

我认为问题在于我没有注册AppService anyware

@NgModule({
  imports: [ BrowserModule ],
  declarations: [ App ],
  bootstrap: [ App ]
})
export class AppModule {}

您必须将AppService添加到
提供程序
阵列:

@NgModule({
  imports: [ BrowserModule ],
  declarations: [ App ],
  bootstrap: [ App ],
  providers: [AppService]
})
export class AppModule {}
您可以在此处阅读有关Angular2依赖项注入的更多信息:

添加

providers:[AppService],

在您的
@NgModule
中,如下所示:

@NgModule({
  imports: [ BrowserModule ],
  declarations: [ App ],
  providers: [ AppService ],
  bootstrap: [ App ]
})
export class AppModule {}
您是对的,您需要向您的模块声明您的服务,以便能够将其用作DI

Injectable()
export class AppService{
应该是

@Injectable()
export class AppService{
providers:[AppService] 
应该是

@Injectable()
export class AppService{
providers:[AppService] 


如果您希望为整个应用程序提供一个服务实例,请将其添加到
AppModule
的提供者中,如其他答案所示。如果您希望每个
AppComponent
都有一个实例(通常也是整个应用程序的一个实例),请将其保留在原来的位置。模块级提供的其他服务将无法以这种方式注入
AppService

这解决了plunker问题,但不是我在机器上遇到的问题。我会读更多关于它的内容。Injectable()decorator即使在没有
@
的情况下也能工作,这是怎么回事呢?事实上它没有,但签入Plunker后发现了代码中的另一个bug。构造函数缺少主体
{}
,因此被忽略。如果类的构造函数有参数,则只需要
@Injectable()
。在这种情况下,由于构造函数被忽略,类被视为没有构造函数(或只有默认构造函数)而不需要装饰器。谢谢你,PS:我不是问题所有者,但我问过你,因为你是angular2金牌。谢谢;)啊,对。无论如何,谢谢你的问题,因为它揭示了另一个错误。另请参阅下面的评论,我的答案揭示了你的Plunker中的另一个问题。谢谢,这是问题的一部分。我仍然得到一个错误,但一个不同的。我也会研究它。