typescript 我试图从本地存储中获取Cart的数据&我将ProductsModel属性作为Cart模型对象中的嵌套数组对象,我遇到了错误

jv4diomz  于 2023-06-24  发布在  TypeScript
关注(0)|答案(1)|浏览(113)

我试图从本地存储中获取数据,这是产品并显示在购物车模板中,我有产品模型属性作为一个嵌套数组对象在购物车模型对象。我正在使用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[]
}
smtd7mpg

smtd7mpg1#

LocalStorage只存储字符串,如果我们直接存储一个对象而没有字符串,我们无法在控制台(应用程序选项卡)中查看内容。为了解决这个问题,我们必须对数据进行字符串化,这样我们就可以在控制台中查看数据,并且在检索数据时,我们应该解析它以将其转换为实际的对象。

相关问题