我一直在质疑自己在Angular应用中放置与API对话的服务的正确位置。最初,我认为最好的位置应该在功能的模块中,但我对它有疑问。
假设我有延迟加载的模块 FeatureA ,由于API端点,我在数据库中CRUD表,因此我将 FeatureAService 作为的提供者FeatureAModule 。
但是,假设我有另一个需要读取信息的延迟加载模块 FeatureB 。我已经有一个功能可以帮助我在 FeatureAService 中做到这一点,所以我可以重用它,但我需要提供服务。
我可以将 FeatureAModule 导入我的 FeatureBModule ,但我认为这也会带来 FeatureA 的所有组件。我可以将 FeatureAService 放在我的 FeatureA 和 FeatureB 之间共享的第三个模块中,但这引出了一个问题:是否应该是所有数据服务被放置在所述模块中,以便它们可以在整个应用程序中使用?
答案 0 :(得分:0)
通常你会想要导入上面的 lazzily-loaded模块,所以有一个单独的实例,任何模块都可以访问它。您可以使用@SkipSelf
执行一些奇怪的操作,但通常不认为这是最佳做法。
官方Angular文档建议在自己的功能模块中创建服务,并将应用程序中可用的服务注入到根模块中,或者如果有一个服务在少数延迟加载的模块中共享,注入那些延迟加载的模块的父级。
因此,该服务应该是它自己的模块,并导入到最有意义的父模块中。