如何为chartjs返回Promise正确

时间:2019-05-21 16:16:30

标签: angular firebase charts angularfire2

我有一个调用firebase的服务,返回一个诺言。如果firebase返回数据,则将它们绑定到chartjs图表。但是不知何故,我遇到了Promise错误。

到目前为止,我试图转移解决承诺的位置,但是我总是遇到相同的错误。当我将返回的数组打印到控制台时,它看起来很完美。

getChart()
  {
    let promise = new Promise((resolve, reject) => {

      let dates: string[] = [];
      let values: number[] = [];
      let response: any = [];

      let res: Observable<BodyFat[]> = this.db.list(this.BASE_PATH, ref => ref.orderByChild(this.DATE).limitToLast(40)).snapshotChanges()
    .pipe(map(items => {
      return items.map(item => {
        let bodyfat = new BodyFat;
        bodyfat.id = item.payload.key;
        bodyfat.date = new Date(item.payload.child(this.DATE).val());
        bodyfat.fat = item.payload.child(this.FAT).val();

        return bodyfat;
      })
    }));

    let i: number = 0;

    res.subscribe(data => {
      data.forEach(element => {

        i++;

        var shortDate = moment(element.date).format('DD.MM.YYYY');

        if(dates.indexOf(shortDate) === -1)
        {
          dates.push(shortDate);
          values.push(element.fat);
        }

        if(i === data.length-1)
        {
          response = {...}
        };

        resolve(response);
        }
      });
    });
    });

    return promise;
  }
    this.bodyfatService.getChart().then(function(data)
    {
      this.bodyFat = new Chart(document.getElementById('bodyFatChart'), data);
    });

此刻,我收到以下错误:错误错误:未捕获(承诺):TypeError:无法读取null的属性“长度” TypeError:无法读取null的属性“长度”

但是我希望图表会绘制出来。也许有一种更简便的方法可以按角度绘制火力地带数据。顺便说一句。静态数据非常完美。

0 个答案:

没有答案