代码之家  ›  专栏  ›  技术社区  ›  atiyar

哪种类型的注入器注入ViewContainerRef或ElementRef?

  •  0
  • atiyar  · 技术社区  · 1 年前

    我在Angular中读了几篇关于两种类型的注入器层次结构的文章—— ElementInjector EnvironmentInjector 层次结构,以及它们提供的依赖关系类型,以及在 ElementInjector 首先是层次结构,然后在 环境注射器 等级制度而且,如果我理解正确的话 环境注射器 层次结构包括-

    RootInjector->平台注射器->NullInjector

    我对以下事情很好奇 ViewContainerRef , ElementRef 等等。这些既不是用户定义的依赖项,也不是任何特定于平台的东西——它们是框架提供的东西。那么,哪种类型的注入器将它们注入到我的组件/指令中呢?

    1 回复  |  直到 1 年前
        1
  •  1
  •   Matthieu Riegler    1 年前

    二者都 ElementRef ViewContainerRef 是特殊的令牌,因为它们存储在TNode中。它们不像常规的DI令牌那样提供。

    在这两种情况下,组件的NodeInjector都将为这些令牌提供值。

    export function injectViewContainerRef(): ViewContainerRef {
      const previousTNode = getCurrentTNode() as TElementNode | TElementContainerNode | TContainerNode;
      return createContainerRef(previousTNode, getLView());
    }
    

    Source code

    export function injectElementRef(): ElementRef {
      return createElementRef(getCurrentTNode()!, getLView());
    }
    

    source code

    推荐文章