我正在尝试使用splice从现有阵列中删除项目但是没有按预期工作。我甚至尝试使用过滤器而不是拼接,但得到了相同的输出。有人可以看看这里的功能,并帮我弄清楚问题。
请尝试在此处添加可用的项目 - https://08b11a0437.stackblitz.io/products,然后导航到购物车页面并尝试删除每个项目。这些项目未按预期删除。
相关代码可在cartservice.ts,cartcomponent.ts(removeProductFromCart())和cartcomponent.html - https://stackblitz.com/edit/08b11a0437?file=app%2Fcart%2Fcart.component.ts
中找到答案 0 :(得分:0)
问题是您要从cartService中的数组中删除项目,但对于UI,您使用的是products数据中的值。
快速解决方法是重新加载您的产品阵列。只需在removeProductFromCart
的{{1}}功能中添加以下代码即可。在函数末尾添加它。
ShoppingCartComponent
除此之外还有另一个问题。您正在使用this._cartService.getAddedProducts().subscribe((data: IProduct[]) => {
this.products = data.map(item => item[0]);
});
隐藏ShoppingCartComponent
html中的项目。考虑到您的购物车中有三个产品(ID为1,2和3),当第一个产品被移除时,*ngIf="removeItemId !== product.id"
将有1个,因此第一个产品将被隐藏。但是当用户删除第二个产品时,removeItemId
将设置为2,现在产品1将可见。