我为 Angular 2 应用程序编写了三个服务,配置将两个注入到第三个并在那里使用。导入这两个(所有三个都用 装饰@Injectable())后,我仍然收到一个未知的提供程序错误。
为了解决这个问题,我尝试将注入的服务放入模块提供程序数组中,这很有效。这是最好的方法吗?
Angular 文档显示了在组件级别列出可注入的内容。我可以将所有可注射剂放入模块提供程序数组中吗?
似乎这将简化应用程序设置,因为所有内容都配置在每个模块的中心位置。无需逐个组件搜索依赖项。
我为 Angular 2 应用程序编写了三个服务,配置将两个注入到第三个并在那里使用。导入这两个(所有三个都用 装饰@Injectable())后,我仍然收到一个未知的提供程序错误。
为了解决这个问题,我尝试将注入的服务放入模块提供程序数组中,这很有效。这是最好的方法吗?
Angular 文档显示了在组件级别列出可注入的内容。我可以将所有可注射剂放入模块提供程序数组中吗?
似乎这将简化应用程序设置,因为所有内容都配置在每个模块的中心位置。无需逐个组件搜索依赖项。
是的,@NgModule.providers如果服务是应用程序范围(单例),请将其放入。仅将其添加到@Component.providersif 服务应为组件范围1(每个组件应获取自己的实例)
1 - 另见分层注入器
这取决于您的要求,您想要什么样的服务。
单例服务
如果你想使用singleton service,你可以把你的服务放在中心区域的某个地方。你会认为你应该在AppModule. 但仍然要实现真正的单例模式/实例,您应该在CoreModule 中放置/声明服务 - 请检查如何使用 CoreModule然后导入CoreModule到AppModule.
多实例服务
如果您在组件中声明服务@Component decorator,您将在不同的组件中拥有不同的服务实例。