不能使用ngFor

时间:2019-06-07 08:36:41

标签: angular

我正在尝试使用ngFor循环从数组中获取数据。我明白了

  

“找不到类型不同的支持对象'[object Object]'   'object'.NgFor仅支持绑定到数组等Iterables。

我该如何解决?

我如何获取数据

if (this.resources$) {
  this.resources$.subscribe(result => {
    if (result)  {
      this.resourcesList = <Resources[]>result;

      this.showResources = true;
    }
  });



export interface Resources {
 Id: number;
 Name: string; 
}

我正试图那样使用它

<div *ngFor="let res of resourcesList">{{res.Name}}</div>

3 个答案:

答案 0 :(得分:2)

如果要遍历对象,可以使用keyvalue管道。

<div *ngFor="let res of resourcesList | keyvalue">
    {{res | json}}
</div>

答案 1 :(得分:0)

  1. resourcesList必须是一个数组。
  2. resourcesList初始化为一个空数组,即public resourcesList : any = []
  3. 确保this.resources$.subscribe(...)发送的响应是对象数组
  4. 更改<div *ngFor="let res of resourcesList">{{res?.Name}}</div>

答案 2 :(得分:0)

根据您对另一个答案的评论,您的后端返回以下格式的对象:

{
  "ItemsCount": 1,
  "Resources": [
    {
      "Name": "Garaż wolnostojący 1",
      "DerivedFullName": "Garaż wolnostojący 1",
      "ParentId": 0,
      "IsLinkPossible": true,
      "Children": [],
      "Code": "",
      "Path": "Garaż wolnostojący 1",
      "Description": "",
      "Id": 186973
    }
  ]
}

不是数组,该数组位于response.Resources中,因此请执行以下操作:

this.resourcesList = <ResourcesDetailsToIssueResponse[]>result.Resources;

可能会为您完成这项工作。