javascript - JSON 响应位于数组中,但仍引发错误 "NgFor only supports binding to Iterables such as Arrays"

标签 javascript angular typescript angular2-services

TypeScript 文件

export class CompanyComponent  {
  apiService : APIService;
  data : any;
  private companyUrl = 'http://localhost:4000/api/company/';

  constructor(apiService : APIService) {
    this.apiService = apiService;
    this.getCompanies(this.companyUrl);
  }

  getCompanies(url: any){
    this.data = this.apiService.GET(url).map((response :Response)=>
    response.json()).subscribe((response)=>{
    this.data = response;
    console.log(this.data);
  })
}

响应数组

[
   {"_id":"58f61a132d44240d085ca2fa","comapny_name":"Burslem 
  Spice","__v":1,"categories":["58f643382d44240d085ca2fb"]},<br>
  {"_id":"590487964a45c56c0fa2911a","comapny_name":"Tiger 
  Bite","categories":[]}
]

HTML 文件

<div class="media">
  <div class="media-left" >
    <li class="media" *ngFor = "let comp of data" >
      <label>{{comp}}</label>
    </li>   
  </div>  
</div>

上面的响应仍在数组中,但我收到此错误:

ERROR caused by: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.

Object is array

最佳答案

data : any; 表示数据可以是任何内容,但 *ngFor 只接受 Iterables。 将其更改为数组 因为您正在加载异步,所以当第一次渲染 dom 时,data 将是未定义的,因此 Angular 会提示。

 export class CompanyComponent  {
      apiService : APIService;
      data : Array; // or array
      private companyUrl = 'http://localhost:4000/api/company/';

constructor(apiService : APIService) {
        this.apiService = apiService;
        this.getCompanies(this.companyUrl);
        this.data = []
}

getCompanies(url: any){
        this.apiService.GET(url).map((response :Response)=>
        response.json()).subscribe((response)=>{
            this.data = response;
            console.log(this.data);
        })
}

HTML

<div class="media">
  <div class="media-left" >
      <li class="media" *ngFor = "let comp of data" >
          <label> {{comp.company_name}}</label>
      </li>   
  </div>  
</div>

关于javascript - JSON 响应位于数组中,但仍引发错误 "NgFor only supports binding to Iterables such as Arrays",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43696767/

相关文章:

javascript - 动态更改表单错误的 Angular 工具提示内容

javascript - chrome 扩展中不存在 chrome.runtime.onConnect

javascript - 如何在 $mdDialog 中添加表单

angular - 类型 'error' 上不存在属性 '"“| Promise<any>'

angular - 将 Assets 翻译文件嵌入到 Angular Web 组件中

Angular[karma] Observable 上的异步测试

typescript - 如何配置 create-react-app typescript 以自动将 ts-loader 用于基于 typescript 的节点模块?

javascript - 如何使用 Express.JS 接收多个请求

typescript - 您如何使用 atom-typescript 包控制/配置 linting?

javascript - 如果从 jqgrid colmodel 创建发布数据,如何删除 eval