有人知道如何获取组件模板中定义的元素吗? Polymer 使用 $
和 $$
真的很容易。
我只是想知道如何在 Angular 中进行操作。
以教程中的示例为例:
import {Component} from '@angular/core';
@Component({
selector:'display',
template:`
<input #myname (input)="updateName(myname.value)"/>
<p>My name : {{myName}}</p>
`
})
export class DisplayComponent {
myName: string = "Aman";
updateName(input: String) {
this.myName = input;
}
}
如何从类定义中捕获或获取 p
或 input
元素的引用?
原文由 Aman Gupta 发布,翻译遵循 CC BY-SA 4.0 许可协议
与其注入
ElementRef
并使用querySelector
或类似的方法,不如使用声明性方式直接访问视图中的元素:元素
StackBlitz 示例
@ViewChildren('var1,var2,var3')
)。<ng-content>
投影元素)。子孙
@ContentChildren()
是唯一允许查询后代的{descendants: true}
应该是默认值,但不在 2.0.0 最终版本中,它 被认为是一个错误这已在 2.0.1 中修复
读
如果有组件和指令
read
参数允许指定应该返回哪个实例。例如
ViewContainerRef
这是动态创建的组件所需要的,而不是默认的ElementRef
订阅更改
尽管仅在调用
ngAfterViewInit()
ngAfterContentInit()
设置内容子项,但如果要订阅查询结果的更改,应该这样做在ngOnInit()
https://github.com/angular/angular/issues/9689#issuecomment-229247134
直接 DOM 访问
只能查询 DOM 元素,不能查询组件或指令实例:
获取任意投影内容
请参阅 访问嵌入的内容