首页 文章

最好注册Angular 2提供商

提问于
浏览
0

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

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

Angular文档显示了组件级别的可注射表 . 我可以将所有注射剂放入模块提供者阵列吗?

这样看似会简化应用程序设置,因为所有内容都配置在每个模块的中央位置 . 不按组件搜索依赖关系 .

2 回答

  • 3

    是的,如果服务是应用程序作用域(单例),则将其放在 @NgModule.providers 中 . 如果服务应该是组件范围1(每个组件应该获得自己的实例),只将它添加到 @Component.providers


    1 - 另请参见分层注射器

  • 1

    It depends upon your requirement that what kind of service you want.

    Singleton service

    如果您想使用 singleton service ,您可以将服务放在中心区域的某个地方 . 您会认为应该在 AppModule 中使用/放置服务 . 但仍然要实现真正的单例模式/实例,您应该在 CoreModule-please check how to user CoreModule 中放置/声明服务,然后将 CoreModule 导入 AppModule .

    Multiple Instance service

    如果在组件的 @Component decorator 中声明serivce,则在不同组件中将具有不同的服务实例 .

相关问题