1

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

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

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

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

4

1 回答 1

0

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

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

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

于 2018-01-29T16:02:24.197 回答