我的项目中有一个问题
角度5
,
NgRx
、材料设计引导和
图表
.
基本上,在创建图表时,我会得到一个控制台消息列表,如下所示(无论如何,图表都会正确显示):
试图在对象“17.94,17.47,17.14,17.17,18.21,17.91,18.34,20.25,21.39”上使用描述符“[object object]”配置“_chartjs”,但出现错误,放弃:TypeError:无法定义属性_chartjs,对象不可扩展-区域。js:2228
试图在对象“17.94,17.47,17.14,17.17,18.21,17.91,18.34,20.25,21.39”上用描述符“{”configurable:true,“enumerable:false}”配置“push”,但出现错误,放弃:TypeError:无法定义属性push,对象不可扩展-zone。js:2228
试图在对象“17.94,17.47,17.14,17.17,18.21,17.91,18.34,20.25,21.39”上用描述符“{”configurable:true,“enumerable:false}”配置“pop”,但出现错误,放弃: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需要大量的文件