我的服务包含一个静态方法(我用于一些初始化处理)
在我的方法中,我需要从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
因为它是静态方法
建议吗
答案 0 :(得分:3)
静态方法不是实例方法,简单就是这样。 this
仅引用静态类属性,而非静态this
引用类的实例 - httpClient
不是静态的,因此它不存在 在静态属性中。
你可以使httpClient成为静态,但是Angular将无法将其注入服务实例。
我会在这里质疑你的设计以及需要这个方法是静态的原因 - 服务总是作为实例创建,我真的不能想到需要httpClient
调用的情况在通过Angular的DI无法访问服务的地方。