gpt4 book ai didi

angular - 获取子元素

转载 作者:太空狗 更新时间:2023-10-29 17:30:10 51 4
gpt4 key购买 nike

请看下面的代码。

import { Component,ViewChild,QueryList,ViewChildren } from '@angular/core'

@Component ({
selector : 'other-component',
template : `
<h2>OtherComponent<h2>
<table #tab id="tab">
<tr *ngFor="let val of valArray">
<td>{{val}}</td>
<input type="checkbox" [value]="val">
</tr>
</table>
<button (click)="getChecked()">click me</button>`
})
export class OtherComponent{
valArray = ['one','two','three','four'];
@ViewChild ('tab') elem;
getChecked = () => {

console.log (this.elem.nativeElement.children[0].children)
}

}

在表格行的末尾有一个已分配行值(JSON 对象)的复选框,现在我想收集 Angular 2 中的所有选中框。

在普通的 javascript 中,我可以像下面这样轻松地做到这一点

var yy = document.getElementById('tab').getElementsByTagName('input');

我通过 this.elem.nativeElement.children[0].children 找到了我要找的东西

这给了我 tr 元素数组,我从中得到了选中的输入框

在 angular 2 中有没有更好的方法来做到这一点?

最佳答案

更改 html(将 #cbx 添加到 input),如:

<tr *ngFor="let val of valArray"><input #cbx type="checkbox" [value]="val"></tr>    

然后在你的组件类中:

@ViewChildren('cbx') checkboxes;
getChecked = () => {
console.log(this.checkboxes.toArray().map(x => x.nativeElement));
}

它将打印所需复选框的数组

另见直播 Plunker Example

更新

另一种方法是直接使用 dom api:

@ViewChild ('tab') elem;
getChecked = () => {
console.log(this.elem.nativeElement.getElementsByTagName('input'));
console.log(this.elem.nativeElement.querySelectorAll('input'));
}

关于angular - 获取子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39457805/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com