我有一个使用泛型的服务,我想将它注入到另一个这样的服务中

export class RestoreService<T>

注入在这样的组件中工作
constructor(private restoreService: RestoreService<Hero>) {}

如果我尝试将同一个服务注入到非组件类中,就会出现一个异常,说“无法解析otherservice的所有参数(?)。请确保它们都具有有效的类型或批注。“
这是一个基于angular.io分层注入样本的样本。
http://plnkr.co/edit/wkj838xacI3cbOvz3qTs?p=preview
我还注意到,用不同的ts注入restoreservice的多个实例只会创建一个实例。所以我想知道使用泛型类是否是一个推荐的模式。

最佳答案

确保已将所有依赖项注册为提供程序。
例如将RestoreService, OtherService添加到提供程序

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

修正了错误。
我没有完全调查您的示例,但是您已经在RestoreService中的OtherService中添加了providers:hero-editor.components.ts,这使它们在那里为人所知,但并不能使整个应用程序都知道它们。
注意:如果你想在你的应用程序中只有一个服务实例(singleton),只需在一个地方添加它-通常bootstrap(...)
如果希望di为每个组件创建一个新实例,请将其添加到组件提供程序中。

09-11 17:41