Angular:如何在静态方法服务中使用HttpClient

时间:2018-04-25 15:54:11

标签: angular typescript

我的服务包含一个静态方法(我用于一些初始化处理)

在我的方法中,我需要从Web服务中获取一些数据

    @Injectable()
    export class FeaturesInitializationService {

      static allowedFeaturesModules: any = FeaturesInitializationService.featuresFilter();
      public httpClient : HttpClient ;

      constructor() {
      }

      static featuresFilter() {


// HERE IT's NOT ALLOWED to USE "this.httpClient"
       this.httpClient.get('myUrl').subscribe(    
          ( data ) => {
            console.log(data);
          }
        );
        const testPef = true;
        const featuresList = [];
        if (testPef === true) {
          featuresList.push(MenusModule);
        } else {
          featuresList.push(ChangelogModule);
        }
        return featuresList;
      }
    }

你可以看到我不允许使用this.httpClient因为它是静态方法

建议吗

1 个答案:

答案 0 :(得分:3)

静态方法不是实例方法,简单就是这样。 this仅引用静态类属性,而非静态this引用类的实例 - httpClient不是静态的,因此它不存在 在静态属性中。

你可以使httpClient成为静态,但是Angular将无法将其注入服务实例。

我会在这里质疑你的设计以及需要这个方法是静态的原因 - 服务总是作为实例创建,我真的不能想到需要httpClient调用的情况在通过Angular的DI无法访问服务的地方。