据我所知,每个角度模块都有自己的喷射器。
然而,在编译过程中,所有模块都是单一的合并。
对于导入的模块,最大的困惑是开发人员认为他们建立了一个层次结构。而且,假设一个导入其他模块的模块成为其导入的父模块可能是合理的。然而,事情不是这样的。所有模块都在编译阶段合并。因此,在导入的模块和导入的模块之间没有分层关系。
因此,如果模块之间没有任何层次关系,则不清楚来自所有合并模块的注入器是如何形成模块注入器层次结构的?--如果声明一个根模块中的所有服务--在这种情况下,层次关系将是什么?
更新1:来自Daniel提供的链接的如下所示:
因此,看起来模块注入器层次结构中的顶级元素是AppModule工厂,下面的元素是来自惰性加载模块的注入器防御。
有什么想法吗?
发布于 2021-02-18 16:12:37
角度DI是一个非常复杂的话题,它的实现方式已经在不同的版本中发生了变化。在现代角度,提供语法“根中提供”的服务是一种安全的选择,以允许树的抖动和避免陷阱,而且只有在某些特定情况下,才在模块或组件的提供者数组中手动提供服务。
以下是关于这一主题的两篇好文章:
https://indepth.dev/what-you-always-wanted-to-know-about-angular-dependency-injection-tree
https://stackoverflow.com/questions/66263470
复制相似问题