我试图从本地存储中获取数据,这是产品并显示在购物车模板中,我有产品模型属性作为一个嵌套数组对象在购物车模型对象。我正在使用for循环显示数据,通过使用cartcomponent.ts文件中的console.log(cartData)我正在获取控制台屏幕中的产品模型相关字段的数据,就像这样&错误
但是当我使用嵌套的for循环来处理嵌套的products对象时,它显示“undefined”,而不显示任何数据,我如何解决这个问题。
cartcomponent.ts文件
export class CartComponent implements OnInit {
constructor(private prodService: ProductsService, private cartService: CartService) { }
cartData: Cart[] = [];
ngOnInit(): void {
this.cartData = this.cartService.currentCart();
console.log(this.cartData);
for(let item of this.cartData){
console.log(item.products); //its showing undefined
for(let prod of item.products){
console.log(prod.price);
}
}
}
}
cartcomponent.html
<tbody>
<ng-container *ngFor="let item of cartData">
<ng-container *ngFor="let product of item.products">
<tr>
<ng-container *ngFor="let img of product.images">
<td>
<a href=""><img [src]="'data:image/jpg;base64,' + img.base64Image"
alt="{{product.name}}"></a>
</td>
</ng-container>
<td>
<a href="">{{product.name}}</a>
</td>
<td>
<div >
<input type="number" value="{{item.quantity}}"/>
</div>
</td>
<td>
{{product.price}}
</td>
</tr>
</ng-container>
</ng-container>
</tbody>
服务类方法
currentCart(){
let cartData = [];
let localCart = localStorage.getItem('localCart');
if(localCart){
cartData = JSON.parse(localCart);
}
return cartData;
}
**产品型号 *
export interface Product{
id: number,
name: string,
price: string,
description: string,
category: string
quantity?: number;
images: Image[],
features: Feature[]
}
购物车型号
export interface Cart {
id: number,
userId: string,
quantity: number,
subtotal: string,
total: string,
paymentMethod: string,
shippingAddress: ShippingAddress,
products: Product[]
}
1条答案
按热度按时间smtd7mpg1#
LocalStorage
只存储字符串,如果我们直接存储一个对象而没有字符串,我们无法在控制台(应用程序选项卡)中查看内容。为了解决这个问题,我们必须对数据进行字符串化,这样我们就可以在控制台中查看数据,并且在检索数据时,我们应该解析它以将其转换为实际的对象。