0

我为 Angular 2 应用程序编写了三个服务,配置将两个注入到第三个并在那里使用。导入这两个(所有三个都用 装饰@Injectable())后,我仍然收到一个未知的提供程序错误。

为了解决这个问题,我尝试将注入的服务放入模块提供程序数组中,这很有效。这是最好的方法吗?

Angular 文档显示了在组件级别列出可注入的内容。我可以将所有可注射剂放入模块提供程序数组中吗?

似乎这将简化应用程序设置,因为所有内容都配置在每个模块的中心位置。无需逐个组件搜索依赖项。

4

2 回答 2

3

是的,@NgModule.providers如果服务是应用程序范围(单例),请将其放入。仅将其添加到@Component.providersif 服务应为组件范围1(每个组件应获取自己的实例)


1 - 另见分层注入器

于 2016-10-29T04:48:34.367 回答
1

这取决于您的要求,您想要什么样的服务。

单例服务

如果你想使用singleton service,你可以把你的服务放在中心区域的某个地方。你会认为你应该在AppModule. 但仍然要实现真正的单例模式/实例,您应该在CoreModule 中放置/声明服务 - 请检查如何使用 CoreModule然后导入CoreModuleAppModule.

多实例服务

如果您在组件中声明服务@Component decorator,您将在不同的组件中拥有不同的服务实例。

于 2016-10-29T04:59:47.377 回答