在Angular 2+中,是否所有服务都应位于CoreModule内?

时间:2017-10-17 07:32:45

标签: angular

在Angular 2+样式指南和许多其他参考文献中,我看到作为单例的所有Angular Services都应该位于CoreModule内作为最佳实践。

如果它不在CoreModule中,那么当模块被延迟加载时,可以在子注入器中再次进行服务。这意味着不是单例的服务不应位于CoreModule内。但我是Angular的新手,到目前为止几乎所有的服务都是单身制作的。我不能想到一个具体的例子,其中服务不是单身的。

非单身人士服务是否可能不应包含在CoreModule中,而是包含在不同的地方?或者服务应该是单身还是非单身服务应该尽可能避免服务?

1 个答案:

答案 0 :(得分:2)

有很好的服务例子不是单身人士。

许多组件使用共享服务与路由器添加的后代组件,兄弟组件或组件进行通信。 如果您有一个下拉组件需要与下拉列表中的项目进行通信,那么每个下拉列表实例都有一个服务实例。所有下拉列表的共享服务可能会破坏他们的行为。

如果您在延迟加载的模块中有管理页面,您可能不希望与客户部分共享某些服务,因为有特定于管理页面的功能,并且只有在记录管理员用户时才需要并导航到该页面。

同样可能适用于可以拆分为多个模块的应用程序,而不是每个用户每次都加载每个模块。