簡體   English   中英

如何將 httpClient 注入實例化服務?

[英]How do I inject httpClient into an instantiated service?

我在 app.module.ts 中實例化 MyService,並在我的整個代碼中提供它。

但是,我希望 MyService 使用 httpClient,並且我無法以角度慣用的方式實例化 httpClient 作為參數傳遞給 MyService。 我不確定在 MyService 中訪問 httpClient 的正確方法是什么。

我看過直接實例化 httpClient 然后將它作為參數傳遞給我的服務。 然而,這似乎會產生循環依賴。 我也嘗試過弄亂注入器,但這顯然是 Angular 團隊明確反對的。 我強烈覺得我錯過了一些簡單的東西。

app.module.ts

imports: [
    ...
    httpClientModule
    ...
],

function MainServiceFactory() {
    return new MyService();
}
...
providers: [{
    provide: MyService,
    useFactory: MainServiceFactory
}],
...

我的服務.ts

...
constructor(private http : HttpClient) {
    ...
}

沒有實例化並作為 httpClient 的參數傳遞:我自然會收到“app.module.ts 中的錯誤,預期為 1 個參數”! 通過實例化,我打破了角度建議。

編輯:我忽略了指定我確實導入了 httpClientModule

大家都說得導入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注入,完全沒有問題。

我希望它能幫助你更好地理解它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM