angular - 启用或禁用 ngFor 迭代元素
问题描述
我有以下html代码
<canvas id="canvas{{i}}" #mycanvas width="550" heigth="650" (click)="onChartClick($event)" *ngIf="individualVisibility"></canvas>
此画布在 for 循环中迭代,创建多个画布。我只想启用一个并禁用剩余的画布。我尝试使用 ngIf,但它适用于所有元素。在这种情况下,我可以创建一个自定义指令并使用它吗?任何人都可以提供建议。
我不想隐藏元素,基本上我希望将这些元素从 DOM 中删除。
解决方案
要在单击时显示或隐藏画布元素,您必须跟踪它们的可见性状态。
在您的组件中,创建一个visible
长度与*ngFor
.
visible: boolean[];
// Initialize 'visible' array. 'collection' is the iterable object used in *ngFor.
this.visible = new Array(this.collection.length).fill(true);
将索引传递给画布元素的单击事件处理函数。
<canvas *ngIf="visible[i]" id="canvas{{i}}" (click)="onChartClick(i)"></canvas>
修改 click 事件处理函数以仅显示选定的画布并删除其他画布。
onChartClick(index) {
this.visible = this.visible.map((value, i) => {
if (i === index) {
// Keep selected canvas visible.
return true;
} else {
// Remove others.
return false;
}
});
}
查看 StackBlitz 上的现场演示:https ://stackblitz.com/edit/angular-kshfid
推荐阅读
- c++ - 从文件输入逗号分隔的数字行到结构向量容器?
- python - 错误:[Errno 13] Google 驱动器上的权限被拒绝
- pouchdb - PouchDB 7.2.2 更新文档未持久化
- c# - 为什么我没有让我的主客户在我的房间里?在 Unity 中使用 Photon 制作多人游戏
- c# - 在 MongoDB 中使用 ASP.NET Core 标识
- tensorflow - 在 TensorFlow 图像分类中获取标签
- mysql - docker run mysql image 命令不工作 [MacBook Pro M1]
- php - Cakephp 2 如何对模型进行分页但将结果限制为仅具有条件关联模型的结果
- python - 比较 2 个 csv 文件数据时的问题
- c# - 为什么同步方法的异步对应物的吞吐量较小?