我正在开发一个电子商务,我试图设置本地存储来保存购物车内的元素。
所有的罚款,当我添加一个产品到购物车和所有,但一旦我刷新购物车页面,所有的产品就消失了。
我试着设置本地存储,我不知道我错在哪里...
我的浏览器可以使用本地存储权限(Edge)。
cart.component.ts:
export class CartComponent {
products = this.cartService.getProducts();
constructor(
private cartService: CartService
) { }
totalPrice = this.cartService.getProducts().reduce((acc, product) => acc + product.PriceWithIVA, 0);
}
cart.service.ts:
addToCart(product: ProductDTO) {
this.products.push(product);
let products = [];
if (localStorage.getItem ('products')) {
products = JSON.parse(localStorage.getItem('products'));
}
products.push ({
name: product.Name,
image: product.Attachment,
price: product.PriceWithIVA
})
localStorage.setItem ('products', JSON.stringify(products));
this.products = products;
}
getCartDetailsByUser() {
const data = JSON.parse(localStorage.getItem ('products'));
this.products = data;
if (data !== null) {
this.cartQuantity = data.length;
}
}
getProducts() {
return this.products;
}
clearCart() {
localStorage.removeItem ('products');
this.products = [];
this.cartQuantity = 0;
}
2条答案
按热度按时间pcww981p1#
在服务的构造函数中,应询问“localStorage.getItem('products')”
更新*@Jany,您需要注意变量的名称-您将数据存储为name,price和image,但当您添加到购物车时收到的对象具有但收到Name,Attachment和PriceWithIVA。
此外,您有可变的产品在服务和在您的卡,也许这是很好的使用吸气剂。
我分叉了你的代码
您的服务
A simple stackblitz
ttcibm8c2#
尝试使用此方法,这是添加到本地存储的更清晰的代码。
还要将以下内容添加到保存
this.products
的组件中,以便在每次加载组件时使用本地存储。