错误TypeError:res.forEach不是一个函数

时间:2019-07-23 09:02:23

标签: javascript angular typescript

我有一个value代码,如下所示。

HTML

我有一个从中提取数据的API。

<div *ngIf="chart" class="col-xl-4 col-lg-6">
      <div class="card cardColor mb-3">
        <div class="card-header headColor">
          <img class="img-fluid" src="../../../assets/images/chart-bars-box-16-white.png" /> &nbsp;
          <b>Issue Chart</b>
        </div>
        <div class="card-body">
          <canvas id="canvas">{{ chart }}</canvas>
        </div>
      </div>
    </div>  

这是折线图的代码:

url = 'https://api.myjson.com/bins/1dnpid';  

有一个用于管理数据的界面:

// line graph
        this.httpClient.get(this.url).subscribe((res: Data[]) => {
            res.forEach(y => {
              this.year.push(y.year);
              this.price.push(y.price);
            });
            this.chart = new Chart('canvas', {
              type: 'line',
              data: {
                labels: this.year,
                datasets: [
                  {
                    data: this.price,
                    borderColor: '#6ea204',
                    fill: false
                  }
                ]
              },
              options: {
                legend: {
                  display: false
                },
                scales: {
                  xAxes: [{
                    display: true
                  }],
                  yAxes: [{
                    display: true
                  }],
                }
              }
            });
          });  

每当我在浏览器中运行此代码时,都会在下面显示错误:

export interface Data {
    year: String;
    price: number;
}

可能是什么问题?

2 个答案:

答案 0 :(得分:2)

您收到此错误是因为对象本身没有foreach方法,而数组却没有。

您的API返回带有results键的对象,最有可能是您要迭代的数组。

我相信您想改用res.results.forEach

答案 1 :(得分:1)

就像@Félix所说的那样,对象本身没有foreach方法,但是如果对象是可迭代的或类似Array这样的对象,则可以对其进行迭代

Array.from(res).forEach