在Angular 5中访问服务到静态方法

时间:2017-12-13 10:12:08

标签: typescript

我正在尝试将服务的引用访问到我的静态方法中,如下所示:

export class myComponent {
  constructor(private backend: BackendService) { }

  public static myMethod() {
  myComponent.backend.getData()
    .subscribe(
      data => { console.log(data)   },
      error => { console.error(error); }
  );
 }
}

我正在Property backend doesn't exist on type 'typeof myComponent'

如何访问backend参考?

感谢。

2 个答案:

答案 0 :(得分:1)

不确定为什么要这样做,可能看起来像糟糕的架构,但你可以通过以下方式实现这一点。

 export class myComponent {
  constructor(private backend: BackendService) {
     this.constructor.backendService = backend;
  }

  public static myMethod() {
   myComponent.backendService.getData()
     .subscribe(
       data => { console.log(data)   },
       error => { console.error(error); }
   );
  }
}

只有在组件初始化后调用静态方法时,这才有效。

答案 1 :(得分:1)

第一个也是最好的解决方案:只需要使用静态方法来使用您的服务。

另一个如果你真的想要做更难的简单事情;)

@NgModule....
export class AppModule
{

    constructor(public injector: Injector)
    {
        myComponent.injector = injector;
    }
}

然后在你的静态方法中;

var myService = myComponent.injector.get(BackendService);
myService.getData(....);