Angular5。我无法在* ngFor中显示嵌套的json对象

时间:2019-01-21 16:04:52

标签: angular

我无法在HTML模板中显示给定类别的所有产品。页面加载时,它在chrome控制台中向我显示了此问题:

  

错误:找不到类型为“对象”的其他支持对象“ [对象对象]”。 NgFor仅支持绑定到诸如数组之类的Iterables

我的服务

    getCategoriesById(id) {
    return this.http.get<Categories[]>('http://localhost:61085/api/Categories/GetCategoriesById/' + id);
  }

我的组件:

 export class CategoriesDetailsComponent implements OnInit {
  listCategories:  Categories[] = [];
  constructor(private activatedRoute: ActivatedRoute, private productService: CategoriesProductsService) { }

  ngOnInit() {
    this.displayProductsByCategoryId();
  }
  displayProductsByCategoryId() {
    const id = +this.activatedRoute.snapshot.params['id'];
    this.productService.getCategoriesById(id).subscribe((data) => {
      this.listCategories = data;
      console.log(this.listCategories);
    });
}
}

HTML模板:

    <div class="row">
<div class="col-sm-4" style="cursor: pointer;" *ngFor="let categories of listCategories " [routerLink]="['/products-details', categories.Id]" >
  <div *ngFor="let product of categories.Product">
    <h3 style="text-align: center">Product Name: {{product.Product.Name}}</h3>
  <img class="img-fluid" src="{{product.Product.Image}}">
  <p style="color: yellow">Price: {{product.Product.Price}}PLN</p>
</div>
</div>

模型类别和产品类别:

 export class Categories {
  Id: number;
  Name: string;
  Product: Products;
}

export class Products {
  Id: number;
  Name: string;
  Description: string;
  DetailedDescription: string;
  Price: string;
  IsNewProduct: boolean;
  PromotionalProduct: boolean;
  Image: string;
  CategoryId: number;
}

Chrome console

欢迎任何帮助或建议。

2 个答案:

答案 0 :(得分:0)

问题在这里

 export class Categories {
  Id: number;
  Name: string;
  Product: Products[]; // this needs to be an array
}

答案 1 :(得分:0)

您从API获得的响应属于特定类别。并且该类别具有Products属性,该属性是一个数组,可以对产品数组使用* ngFor而不是单个类别。