昨天,我们介绍了配置我们的提供商的不同选项与providedIn
语法。今天,让我们来看看Angular是如何使用分层的喷油器。
假设有aButtonComponent
这需要一个LoginService
。Angular会检查的注入器ButtonComponent
看看是否LoginService
是可用的(因为所有组件都有自己的注入器,可配置的数组供应商
或者是providedIn
语法)。
假设组件注入器不知道这个服务。在这种情况下,它会问它的父组件,然后是祖父组件,沿着组件层次结构往上走,直到到达应用的根注入器:
这些被称为分层的喷油器它们依赖于我们的组件层次结构。这解释了为什么在组件级别更改提供商的配置会影响组件及其所有子组件。
模块呢?
如果某个服务在组件树中找不到,那么Angular就会使用类似的解析路径模块的层次结构,从子模块一直到AppModule
。
如果没有找到服务,Angular就会抛出一个错误,指出该服务没有可用的提供商。