簡體   English   中英

Angular2 //為什么帶有泛型的DependencyInjection僅在組件中工作?

[英]Angular2 // Why is DependencyInjection with Generics only working in Components?

我有一個使用泛型的服務,我想注入這樣的另一個服務

export class RestoreService<T>

注入適用於這樣的組件

constructor(private restoreService: RestoreService<Hero>) {}

如果我嘗試將相同的服務注入非Component類,我會得到一個異常,說“無法解析OtherService的所有參數(?)。確保它們都有有效的類型或注釋。”

以下是基於angular.io的分層注入樣本的示例樣本http://plnkr.co/edit/wkj838xacI3cbOvz3qTs?p=preview

我還注意到,只有在創建一個實例時,使用不同的Ts注入RestoreService的多個實例。 所以我想知道是否使用泛型類是一種推薦的模式。

確保將所有依賴項注冊為提供程序。 添加例如RestoreService, OtherService到提供者

bootstrap(HeroesListComponent, [HeroesService, RestoreService, OtherService])

修復錯誤。

我沒有完全調查您的示例,但您已將RestoreServiceOtherService添加到providers:hero-editor.components.ts ,這使得它們在那里已知,但它不會使整個應用程序知道它們。

注意:如果您希望應用程序中只有一個服務實例(單例),只需將其添加到一個地方 - 通常是bootstrap(...) 如果您希望DI為每個組件創建新實例,請將其添加到組件提供程序。

暫無
暫無

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

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