javascript - 根据数组中的 Id 角度增加减少数量
问题描述
在这种情况下,我想实现动态增加减少数组中的计数。我有一个产品列表,我必须在将项目添加到购物车之前增加或减少计数
这是HTML
<div class="add-prdct">
<p (click) = "removeItem(item.id); 'pid = item.id' ">-</p>
<span *ngIf="item.id === pid && isclicked === true">{{ itemCount }}</span>
<span *ngIf="isclicked === false">1</span>
<p (click) = "addItem(item.id); 'pid = item.id'">+</p>
</div>
这里的项目来自ngFor Loop
TS
addItem(id: any, index: any): void {
this.itemCount++;
this.pid = id;
this.isclicked = true;
// this.itemCount = this.itemCount + 1;
}
removeItem(id: any, index: any): void {
this.pid = id;
if (this.itemCount === 1) {
this.itemCount = 1;
} else {
this.itemCount--;
}
}
并itemCount = 1
初始化
问题是当我在一个产品中增加其他产品时,{{ itemCount }}
它不持有 1 值
帮助
解决方案
您itemCount
在所有项目之间共享相同的内容。您需要对每个项目进行计数。您可以Map
像这样使用它来实现它:
HTML
<div class="add-prdct">
<p (click) = "removeItem(item.id); 'pid = item.id' ">-</p>
<span *ngIf="item.id === pid && isclicked === true">{{ itemsCountMap.get(item.id) }}</span>
<span *ngIf="isclicked === false">1</span>
<p (click) = "addItem(item.id); 'pid = item.id'">+</p>
</div>
TS
const itemsCountMap = new Map<any, number>();
// when initializing an item with id:
this.itemsCountMap.set(id, 1);
// when incrementing
addItem(id: any, index: any): void {
const currentCount = this.itemsCountMap.get(id);
this.itemsCountMap.set(id, currentCount + 1);
this.pid = id;
this.isclicked = true;
}
// when decrementing
removeItem(id: any, index: any): void {
const currentCount = this.itemsCountMap.get(id);
this.pid = id;
if (currentCount > 0) {
this.itemsCountMap.set(id, currentCount - 1);
}
}
推荐阅读
- python-3.x - 抓取表的链接时出现错误“selenium.common.exceptions.InvalidSessionIdException:消息:无效会话 ID”
- php - Codeigniter,上传路径似乎无效
- django - 这种情况下怎么写mixin,以免重复代码
- python - 如何解码从 BytesIO 读取的 FTP 文件
- python - Tensorflow 1.14 无法使用 python 3.6 检测 GPU,但可以在 Python 2.7 中看到它
- transactions - 如何使用对象持久性模型对 DynamoDB 使用事务?
- python - 使用“显示更多”按钮从网站上抓取信息
- python - TypeError: __call__() 接受 2 个位置参数,但给出了 3 个
- kubernetes - 安排 cron 作业永远不会发生?
- mysql - nodeJS 应用程序无法连接到谷歌 MySQL 数据实例