为什么我可以在不导入其提供程序模块的情况下使用服务?

Why can I use a service without importing its provider module?

我正在努力研究 angular 应用程序中的多个 NgModule 如何协同工作,尤其是我正在尝试了解如何正确地将提供常用服务的 SharedModule 导入到 lazily已加载功能模块。

一步一步:

这就是它应该如何工作的,每当你在你的AppModule中导入任何非延迟加载模块然后那个[=21=的服务]非延迟加载模块在整个应用程序中可用。

除此之外的原因,在Angular父子模块中,共享同一个Injector!。但是在 FeatureModule 延迟加载模块 )的情况下,它们有自己的注入器,因此延迟加载模块中提供的任何服务仅可用于该模块。

在你的情况下,你可以说 CoreModuleAppModule 的子模块,而 SharedModuleCoreModule 的子模块,因为两者都是 non - 延迟加载模块 这就是为什么你的 FooServiceFeatureModule 中自动可用的原因。