使用chartsJs

时间:2018-06-15 14:11:42

标签: angular5 chart.js ngrx-store

我的项目中存在使用 Angular 5 NgRx ,materialDesignBootstrap和 chartsjs 的问题。

基本上,当创建图表时,我会得到一个控制台消息列表,如下所示(图表无论如何都会正确显示):

  

尝试配置' _chartjs'使用描述符' [object Object]'对象' 17.94,17.47,17.14,17.17,18.21,17.91,18.34,20.25,21.39'并得到错误,放弃:TypeError:无法定义属性_chartjs,对象不可扩展 - zone.js:2228

     

尝试配置'推送'使用描述符' {" configurable":true," enumerable":false}'对象' 17.94,17.47,17.14,17.17,18.21,17.91,18.34,20.25,21.39'并得到错误,放弃:TypeError:无法定义属性推送,对象不可扩展 - zone.js:2228

     

尝试配置' pop'使用描述符' {" configurable":true," enumerable":false}'对象' 17.94,17.47,17.14,17.17,18.21,17.91,18.34,20.25,21.39'并得到错误,放弃:TypeError:无法定义属性pop,对象不可扩展 - zone.js:2228

经过简短的调查后,我阅读了关于冻结对象的doc,并发现代码将这些消息抛出到chartsJs node_module文件夹中,但我真的不知道如何解决这个问题。

这是图表标记:

<canvas mdbChart *ngIf="chartsData.length >= 1"
    [chartType]="chartType"
    [datasets]="chartsData" 
    [labels]="xLabels"
    [colors]="chartColors"
    [options]="chartOptions"
    [legend]="chartsData && chartsData.length >= 1"
    (chartHover)="chartHovered($event)" 
    (chartClick)="chartClicked($event)">
</canvas>

这是ts文件的一部分:

@Input() chartData: Array<object>; 
@Input() xLabel: Array<string>; 
xLabels: Array<string>; 
chartsData: Array<object>; 

ngOnChanges(changes: SimpleChanges) {
    if( changes.xLabel && changes.xLabel.currentValue.length > 0 && changes.chartData && changes.chartData.currentValue.length > 0 ){
        this.chartsData = changes.chartData.currentValue.map(item => Object.assign({}, item));
        /** this workaround solves a mdb library bug  not updating xAxis label*/
        setTimeout(function () {
            this.xLabels = changes.xLabel.currentValue.slice(0);
        }.bind(this), 0);
    }
}

如上所示,我试图克隆输入对象(它们都来自ngRx状态),但它没有解决问题。

我很乐意提供任何所需信息。我很抱歉,如果这不是一个可行的例子,但你可能知道它需要大量的文件来制作一个有角度的5个工作示例xD

0 个答案:

没有答案