我正在app.module.ts中实例化MyService,并在我的代码中提供它。
但是,我希望MyService使用httpClient,并且无法按角度地实例化httpClient以将其作为参数传递给MyService。我不确定在MyService中访问httpClient的正确方法是什么。
我已经看过直接实例化httpClient,然后将其作为参数传递给我的服务。但是,这似乎产生了循环依赖。我也尝试过使Injectors混乱,但这显然是Angular团队特别建议的。我强烈感到自己缺少一些简单的东西。
app.module.ts
imports: [
...
httpClientModule
...
],
function MainServiceFactory() {
return new MyService();
}
...
providers: [{
provide: MyService,
useFactory: MainServiceFactory
}],
...
MyService.ts
...
constructor(private http : HttpClient) {
...
}
没有实例化并作为httpClient的参数传递:我自然会收到“ app.module.ts中的错误,预期为1个参数”! 通过实例化,我打破了角度推荐。
编辑: 我忽略指定我确实导入了httpClientModule
答案 0 :(得分:1)
正如大家所说,您必须导入HttpClientModule
关于您的代码,我想您正在尝试处理angular's dependency injection
:
我在stackblitz中做了一个例子:
https://stackblitz.com/edit/angular-yqvlv7?file=src%2Fapp%2Fapp.module.ts
在这里我定义了一个抽象类,使其表现得像一个接口,然后my.service
实现了这个接口。
在app.module内部,我使用my-service
类提供“接口”。完成所有这些之后,您可以在组件中注入“接口”(在此链接中,hello.component.ts)
HttpClient
仅注入my-service
中,完全没有问题。
我希望它可以帮助您更好地理解它。