无法使用chart.js和bootstrat图表将元素添加到打字稿中的数组中

问题描述 投票:-2回答:2

我有一个奇怪的问题。我有一个带有映射的简单函数,该映射试图初始化相同对象类型的数组。但是,在迭代完成之后它为空,但是当我进行控制台日志记录时,它将打印所有对象数组。

组件中的功能

对象:

dailyStats: DailyStats[] = [];

-功能

dailyStatistics() {
        this.reportingService.dailyStats(this.toDate, this.fromDate).subscribe( r => {
            r.map(res => this.dailyStats.push(res)); //console log prints the whole array all of them!
        },
       error => {
            console.log('Failed to get Stats' + error);
        },
        () => {
            console.log('Done getting daily stats.');
        });
    } 

showDailyStats() {
        console.log('length' + this.dailyStats.length);  // length 0
        for (const value of this.dailyStats) {
            console.log('average' + value.average);
            //this.lineChartLabels.push(value.date.toISOString());
            //this.lineChartData.push({ data: [value.average], label: 'Average' });
        }

    }
angular typescript chart.js
2个回答
0
投票

您可以直接在subscribe中分配异步调用的结果,而无需使用map方法,然后调用方法showDailyStats

.subscribe( r => {
    this.dailyStats = r; //console log prints the whole array all of them!
    this.showDailyStats();
}

-1
投票

如果在dailyStatistics之后调用showDailyStats方法,则必须使用async / await等待数据进入数组,然后再访问其内容。

© www.soinside.com 2019 - 2024. All rights reserved.