angular - 标签 mat-ltab 中 Ngfor 的使用
问题描述
我在使用(包括角材料)时遇到*ngFor
问题mat-tab
。我有一个按钮,单击该按钮时会使用*ngFor
. 我在这段代码中的 textArea 有一个id = serReal{{j}}
where j 是*ngFor
. 我的参考虽然不起作用。当我试图在我的打字稿代码中获取元素时,它只得到第一个(serReal0
)。对于其他人,我收到 null。
我的 HTML 代码:
<!-- here I call it to duplicate -->
<button mat-icon-button (click)="addData()" type="button" id="add_icon"></button>
<!-- here it is my ngfor code which will duplicate -->
<mat-tab-group>
<mat-tab *ngFor="let itemServ of itemsServ; let j = index;" [label] = label[j]>
<div class="areaTexto">
<div class="mdc-text-field text-field mdc-text-field--fullwidth mdc-text-field--textarea">
<textarea class="campoTextoServReal"
id ="servReal{{j}}"></textarea>
</div>
</div>
</mat-tab>
</mat-tab-group>
<!-- here I call it to read the text areas by the id -->
<div class="divEncerraRel" id = apply>
<button mat-raised-button (click) = 'setRelatorio()'>Encerrar Relatório</button>
</div>
我的 TS 代码:
itemsServ: number[] = [1];
addData() {
this.itemsServ.push(this.itemsServ.length + 1);
this.label.push('Titulo');
}
setRelatorio() {
for (let i = 0; i < this.itemsServ.length; i++) {
console.log((<HTMLInputElement>document.getElementById("servReal" + i)));
}
}
解决方案
我认为您的部分问题是您如何在 html 中设置您的 id。代替
<textarea class="campoTextoServReal" [id]="servReal{{j}}"></textarea>
尝试
<textarea class="campoTextoServReal" id="{{'servReal' + j }}"></textarea>
此外,当您期望<textarea id="servRealj">
(其中 j 是预期的索引)时得到空值的原因是因为它是一个选项卡组。当您在选项卡之间移动时,Angular 会mat-tab-body
从 DOM 中删除 ,因此当您通过元素 id 搜索它们时,它们不存在。您可以看到这一点,因为当您转到选项卡 1 或选项卡 2 时,您只会看到 servReal1 和 servReal2。
推荐阅读
- javascript -
启用虚拟键盘时失去焦点,但在虚拟键盘不可见时正常运行 - angular - 错误类型错误:ng build prod 后无法读取未定义的属性“controlType”
- android - doc、xls 等文件。如何在 Android 上打开文件进行编辑和保存
- python - 如何从 json 列表数据中获取特定索引
- javascript - 事件监听器适用于多个对象
- python - 从熊猫的城市中提取国家
- python - 如何检查自定义训练循环之前/之后 Keras 模型的可训练权重是否发生变化
- python - 停止命令在预调用钩子中运行 - Discord.py
- python - 列表推导将元素附加到元组
- javascript - 如果getStaticProps中的数据无效,如何重定向到404页面?