哪个注入器注入ViewContainerRef或ElementRef?

问题描述 投票:0回答:1

我阅读了几篇关于 Angular 中两种类型的注入器层次结构的文章 -

ElementInjector
EnvironmentInjector
层次结构,以及它们提供的依赖项类型,以及当首先在
ElementInjector
层次结构中找不到某些依赖项时如何处理,然后在
EnvironmentInjector
层次结构中查找它们。而且,如果我理解正确的话,
EnvironmentInjector
层次结构由 -

组成

RootInjector -> PlatformInjector -> NullInjector

我对

ViewContainerRef
ElementRef
等东西很好奇。这些既不是用户定义的依赖项,也不是特定于平台的任何东西。那么哪个注入器将它们注入到我的组件/指令中?

angular angular-dependency-injection angular-injector
1个回答
0
投票

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

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

源代码

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

源代码

© www.soinside.com 2019 - 2024. All rights reserved.