【问题标题】:What is the read parameter in @ViewChild for@ViewChild 中的读取参数是什么
【发布时间】:2016-09-23 20:45:13
【问题描述】:

需要帮助理解以下语句中 {read: ViewContainerRef} 的含义。

@ViewChild('myname', {read: ViewContainerRef}) target;

【问题讨论】:

标签: angular


【解决方案1】:

可以有多个不同类型的实例与带有#myname 模板变量的元素标签相关联。

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

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

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

使用{read: SomeType},您可以使用#myname 模板变量告诉元素应该返回什么类型。

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

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

另见How can I select an element in a component template?

【讨论】:

  • '也许其他组件或指令应用于该标签':我们如何获得可能类型的完整列表?
  • 当前组件的directives: [...] 或选择器匹配的PLATFORM_DITECTIVES 中列出的指令和组件。您可以使用stackoverflow.com/questions/35233572/… 调查正在运行的应用程序。
  • 这仅支持与节点关联的 Angular 类型。 HTMLElement 不是其中之一。 ElementRef 允许使用 `ElementRef.nativeElement. 访问 HTMLElement
  • 只是尝试各种事情并调查 Angular2 源代码。
  • 当元素是一个组件时你不能。如果你使用@ViewChild(... read: ElementRef) ...,你只能指定你想要的
猜你喜欢
  • 2016-08-05
  • 2020-06-12
  • 2016-10-16
  • 2022-01-02
  • 2020-06-22
  • 2019-02-22
  • 2012-06-19
相关资源
最近更新 更多