点击功能中的angular2访问依赖

angular2 access dependency in click function

我正在使用 angular2/Typescript 构建应用程序,并尝试访问作为依赖项注入的服务。在 Angular 1.x 中,我会通过控制器函数访问此服务,并且所有子函数都能够访问相同的依赖项。在这里,我通过组件的构造函数注入它,如下所示:

   constructor( @Inject(JRummy) rummyGame: JRummy) {

        this.currentGame = new Game();
        rummyGame.startGame(this.currentGame);

    }

其中 rummyGame 是我尝试注入的服务。这工作正常。但是,在构造函数中访问了这个服务之后,如何在其他函数中访问它呢?例如,我在组件中有以下点击功能,我想在其中调用 rummyGame 服务中的方法:

  simulateComputer():void {

        rummyGame.computerPlaySolo();

    }

如果 rummyGame 服务只是注入到构造函数中,它是如何注入到这个点击函数中的?我是否需要在组件上创建一个 属性 来存储构造函数访问该服务的实例?

更简单的方法是将变量声明为 private,这样它就可以直接在 class 的上下文 (this) 中使用。

constructor( @Inject(JRummy) private rummyGame: JRummy) {

   //code here

}
//do access service object by having this.rummyGame
simulateComputer():void {
    this.rummyGame.computerPlaySolo();
}

另一件事是你需要在你的服务 class 上安装 @Injectable 装饰器,使其 injectable 在其他组件构造函数中作为依赖项。

发现问题 -- Pankaj 的响应是正确的,但我没有将 @Injectable() 装饰器添加到服务本身的 rummyGame.computerPlaySolo() 方法上。似乎当使用构造函数签名中的 @Inject 声明直接从构造函数调用该方法时,它在没有 @Injectable() 装饰器的情况下工作,但是当我试图在点击函数中访问它时,它无法访问该函数没有@Injectable 声明