数据服务应该放在 Angular 应用程序的什么位置?

Where should Data Services be placed in an Angular App?

我一直在质疑自己将与 API 对话的服务放在我的 Angular 应用程序中的正确位置。最初,我认为最好的位置应该在功能模块中,但我对此表示怀疑。

假设我延迟加载了模块 FeatureA,由于 API 端点,它在我的数据库中对 table 进行了 CRUD,所以我将 FeatureAService 作为我的 FeatureAModule 的提供者。

但是假设我有另一个延迟加载模块 FeatureB 需要读取信息。我已经在我的 FeatureAService 中有一个功能可以帮助我做到这一点,所以我可以重用它,但我需要提供服务。

我可以将我的 FeatureAModule 导入我的 FeatureBModule 但我认为这也会带来 FeatureA 的所有组件。我可以将我的 FeatureAService 放在我的 FeatureAFeatureB 之间共享的第三个模块中,但这要求问题:是否应将所有数据服务放在所述模块中,以便它们在整个应用程序中可用?

通常您会希望在 延迟加载的模块之上导入服务,因此有一个任何模块都可以访问的单例实例。 @SkipSelf 可以做一些奇怪的事情,但通常不被认为是最佳做法。

官方 Angular 文档建议在他们自己的功能模块中创建服务,并将应该在整个应用程序中可用的服务注入到根模块中,或者如果有跨应用程序共享的服务少数延迟加载模块,注入到那些延迟加载模块的父级中。

因此,该服务应该是它自己的模块,并导入到最近的有意义的父模块中。