【发布时间】:2019-10-05 19:23:34
【问题描述】:
我需要的是通过单击材料图标,该图标应根据“ts”文件中设置的值交替显示。我正在使用公共变量来更改图标。但是,由于我只使用一个变量,所有行都会产生效果。此外,如果我使用单击项目的 id 控制它,则先前单击的值(图标)将替换为旧值(图标)。供您参考,我正在通过 observable (API) 显示和保存数据。因此无法从 API 中获取值并立即在列表中显示它。下面是 HTML 和 'ts' 的代码:
onClick(event, row) {
if (event.srcElement.innerText === 'panorama_fish_eye') {
this.statusIconTextTrue = 'check_circle';
taskStatus = 'FINISHED_COMPLETED';
archived = true;
timeFinishedActual = new Date().getTime();
} else {
this.statusIconTextTrue = 'panorama_fish_eye';
taskStatus = 'CREATED';
archived = false;
timeFinishedActual = null;
}
}
<mat-icon (click)="onClick($event, element)">
{{ statusIconID == element.taskuuid && statusIconTextTrue ? statusIconTextTrue : statusIconText }}
</mat-icon>
几天来,我一直在努力寻找正确的逻辑来解决问题。对此有何想法或可能是其他一些解决方案?提前致谢。
【问题讨论】:
-
最简单的方法是在
row上维护一个属性。这也将帮助您摆脱检查 innerText 的困境。您的代码中有很多未定义的变量,它们也应该存在于row中 -
感谢@chrispbacon 的评论。 'row' 变量保存 API 从初始加载时提供的值。所以通过点击我们只能得到那个值。对不起其他未定义的变量。尽管这些实际上并不是未定义的。这些用于保存到 API 的目的。你能给我更多的细节吗?再次感谢
-
将上述代码放入stackblitz demo