app.component.html:
<div *ngFor = "let ivalue of arraytoDispaly;let i = index;">
<input type="text" id={{i}} [value]="ivalue.inputValue" />
</div>
<button (click)='GetElementValue()'>GetElementValue</button>
app.component.ts:
arraytoDispaly = [{'inputValue':'abc'},
{'inputValue':'def'},
{'inputValue':'ghi'}];
GetElementValue(){
var t = (<HTMLInputElement>document.getElementById('1')).value;
console.log(t);
}
每当我单击“ GetElementValue”按钮时,我都会获得ID为“ 1”的输入字段的值作为“ def”。需要知道还有其他方法可以访问* ngFor生成的angular元素。谢谢
答案 0 :(得分:0)
使用模板变量标记您的输入:
<div *ngFor = "let ivalue of arraytoDispaly;let i = index;">
<input #inputs type="text" id={{i}} [value]="ivalue.inputValue" />
</div>
<button (click)='GetElementValue()'>GetElementValue</button>
然后,您可以使用@ViewChildren
并使用QueryList
API查询ElementRef:
@ViewChildren('inputs',
{ read: ElementRef }) inputs: QueryList<ElementRef>;
read
的可能值为:
ElementRef
,ViewContainerRef
或组件/指令本身的名称(如果您在一个元素上有多个指令,则很有用)。
如果需要,可以通过实现AfterViewInit
来初始化元素:
ngAfterViewInit(): void {
// so something with inputs
}
您还可以通过点击处理程序访问inputs
:
GetElementValue(){
var t = (<HTMLInputElement> this.inputs.toArray()[1].nativeElement).value;
console.log(t);
}
或更简洁地使用map
:
GetElementValue(){
var t = (<HTMLInputElement> this.inputs.map(t=>t.nativeElement)[1]).value;
console.log(t);
}
有关更多信息,这是您需要使用@ViewChildren的所有信息: