@ViewChild中的read参数是什么


Answers:


116

可能有各种类型的实例与带有#myname模板变量的element标签相关联。

每个元素都有一个ElementRefViewContainerRef(可能是应用于该标签的组件或指令中的其他元素)。

如果元素是组件,则存在组件实例。

也可以将一个或多个指令应用于该元素

随着{read: SomeType}你告诉什么类型应与元素返回#myname模板变量。

如果不提供read参数,则@ViewChild()返回

  • ElementRef 如果没有应用任何组件,或者
  • 组件实例(如果有)。
  • 如果您想获得不同的东西,则需要使用明确指定read

另请参阅如何在组件模板中选择元素?


“也许其他来自应用于该标签的组件或指令”:我们如何获得可能类型的完整列表?
Ghetolay

directives: [...]当前组件中列出的指令和组件或PLATFORM_DITECTIVES选择器匹配的组件。您可以使用stackoverflow.com/questions/35233572/…来调查正在运行的应用程序。
君特Zöchbauer

3
这仅支持与节点关联的Angular类型。HTMLElement不是其中之一。ElementRef允许使用`ElementRef.nativeElement访问HTMLElement。
君特Zöchbauer

1
只是尝试各种事情并调查Angular2源。
君特Zöchbauer

1
当元素是组件时,您不能这样做。你只可以指定你想要什么,如果你使用@ViewChild(... read: ElementRef) ...
君特Zöchbauer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.