我不确定我的错误在哪里。我一直将此错误与我的系列相关联,说该系列中的数据未定义。
core.js:1598 ERROR TypeError: Cannot read property 'data' of undefined
at Function.push../src/app/simulation/results/chart/chartUtils.ts.ChartUtils.isDateInSeries (chartUtils.ts:210)
at chartUtils.ts:149
at Array.forEach (<anonymous>)
at Function.push../src/app/simulation/results/chart/chartUtils.ts.ChartUtils.getSeries (chartUtils.ts:145)
at Function.push../src/app/simulation/results/chart/chartUtils.ts.ChartUtils.parseDataToSeries (chartUtils.ts:111)
at ChartComponent.push../src/app/simulation/results/chart/chart.component.ts.ChartComponent.createChartFromCsv (chart.component.ts:28)
at ChartComponent.set [as chartData] (chart.component.ts:17)
at updateProp (core.js:10303)
at checkAndUpdateDirectiveInline (core.js:10066)
at checkAndUpdateNodeInline (core.js:11363)
我的方法是否包含与我使用Highcharts的方式有关的任何类型的错误?
我已经包含了从我的打字稿文件中导致控制台错误的方法。当我调用console.log(series.data)时,它显示错误并且不会使我的图表出现...
import { SimulationResults, Application, ENodeBFailureResults } from "../../../../../../server/app/common/dataStructures";
import * as Highcharts from "highcharts";
import * as Highstock from "highcharts/highstock";
export interface SeriesValue {
date: number;
count: number;
}
export interface Series {
name: string;
data: SeriesValue[];
tooltip: {
valueDecimals: number,
valueSuffix: string
};
stack: string;
}
private static isDateInSeries(series: Highcharts.SeriesOptions, date: number): number {
console.log(series.data); //series.data undefined??
for (let i: number = 0; i < series.data.length; ++i) {
if ((series.data[i] as Highcharts.DataPoint).x === date) {
return i;
}
}
return -1;
}
这是实现此方法的地方:
private static getSeries(name: string, index: number, parsedData: number[][], /*timeFramesToDate: Map<number, number>,*/
results: SimulationResults, eNodeBCodeID: number): Highcharts.SeriesOptions[] {
const series: Highcharts.SeriesOptions[] = [];
results.parameters.Applications.forEach((application: Application) => {
const serie: Highcharts.SeriesOptions = this.getNewSeries(application.ApplicationName, name);
for(let i = 0; i < series.length; i++) ((timeframe: number) => {
serie.data.push({ x: (timeframe), y: 0 });
});
series.push(serie);
});
parsedData.forEach((line: number[], i: number) => {
if (line[GraphColumn.eNodeBCodeID] === eNodeBCodeID) {
const lineAppId: number = line[GraphColumn.application];
const lineDate: number = line[GraphColumn.startTimeFrame];
const dateIndexInSeries: number = this.isDateInSeries(series[lineAppId], lineDate); //implementation of method isDateInSeries
(series[lineAppId].data[dateIndexInSeries] as Highcharts.DataPoint).y += line[index];
}
});
return series;
}
这意味着您的系列是未定义的,这就是为什么它提供未定义的错误属性数据的原因。