angular - Angular 5 使用 @ViewChildren 访问 div 列表
问题描述
我想获取以 id 'div' 开头的所有 div。为此,我使用 @ViewChildren 但我无法访问 div,因为我有一个空数组,为什么?
我的模板
<div id="div-1">Div 1</div>
<div id="div-2">Div 2</div>
<input type="button" (click)="getDivs()">
零件
@ViewChildren('div') divs: QueryList<any>;
divList : any[];
getDivs(){
this.divList = this.divs.filter(x => x.id.lastIndexOf('div-', 0) === 0);
console.log(this.divList);
// this.divList return an empty array but i should have two results
}
解决方案
如本详细答案中所述,有效的选择器ViewChildren
包括组件类型、指令类型和模板引用变量。您无法ViewChildren
使用 HTML 元素类型(例如div
)或类名等 CSS 选择器来检索 DOM 元素。
使其在您的情况下工作的一种方法是div
使用循环生成元素ngFor
,并将模板引用变量#divs
与它们相关联:
<div #divs *ngFor="let item of [1,2]" [id]="'div-' + item">Div {{item}}</div>
<button (click)="getDivs()">Get divs</button>
ViewChildren
然后,您可以使用模板引用变量在代码中检索它们:
@ViewChildren("divs") divs: QueryList<ElementRef>;
getDivs() {
this.divs.forEach((div: ElementRef) => console.log(div.nativeElement));
}
有关演示,请参阅此 stackblitz。
推荐阅读
- python - Python从列表中删除每三个元素
- c# - 如何访问图片 Xamarin.Forms、SQLite、C#
- python - 如何在 Python 中从 .xlsx 读取时间?
- angular - 无法将不透明度应用于:主机颜色变量
- rest - 为验证端点上的 REST Api 定义响应
- python - 查找和替换 Python
- php - 两个求和问题,但目标在一个范围内
- python - 将 jpg 的“拍摄日期”更改为比现有值早 5 小时?
- c - 如何在 C 中检测用户的无效输入?
- reactjs - react-redux v7.2 withRef 被移除。要访问包装的实例,请在连接的组件上使用 ref