Я впервые использую HighCharts, и мне трудно найти источники, которые помогут мне решить эту проблему.
Я пытаюсь отобразить несколько графиков с разными номерами серий.Вместо того, чтобы настраивать несколько шаблонов параметров, я хочу использовать только один и использовать функцию для настройки объекта параметров каждый раз.Здесь я предоставил фиктивные данные о том, как будет выглядеть одна из диаграмм, полученная из API.В приложении я планирую кормить его из HTML.
Я продолжаю сталкиваться с различными проблемами из-за моего непонимания HighCharts, сейчас я просто хожу по кругу, исправляя одну проблему только для того, чтобы всплыла проблема прошлого, я надеялся, что кто-то может указать мнев правильном направлении.Это мой класс:
export class CompletenessTabComponent implements OnInit, AfterViewInit {
@ViewChild('chartTarget') chartTarget: ElementRef;
chart: Highcharts.ChartObject;
dataObj = {"id":0,
"tableName":"d1 vs d2",
"data":{"d1Count":[50,45,55,60,70],
"d2Count":[40,32,55,58,33],
"Errors":[2,3,4,1,0]},
"dates":[20180927,20180928,20181001,20181002,20181003]
};
constructor() { }
setHighChartOptions(data, seriesNames, chartTitle ): any {
count = 1;
highChartOptions.title.text = chartTitle;
highChartOptions.xAxis.data = data.dates;
this.chart.series[0].setData(this.dataObj.data[0]);
Object.keys(data.data).forEach((key) =>
this.chart.addSeries({
name: seriesNames[count],
data: data.data[key],
type: 'line'
}) count ++
);
return highChartOptions;
}
getHighChartOptions(){
return highChartOptions;
}
ngOnInit() {
this.chart = chart(this.chartTarget.nativeElement, this.setHighChartOptions(this.dataObj, ['d1', 'd2', 'error'], this.dataObj.tableName));
Object.keys(this.dataObj.data).forEach(key =>
console.log(key, this.dataObj.data[key]))
}
ngAfterViewInit() {
}
}
const highChartOptions = {
colors:
['#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4'],
credits: {
enabled: false
},
chart: {
backgroundColor: null,
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'top',
itemStyle: {
fontSize: '10px',
fontWeight: 'normal'
}
},
tooltip: {
valuePrefix: '$'
},
title: {
text: ''
},
xAxis: {
type: 'date',
data: [],
title: 'date'
},
yAxis: {
title: {
align: 'middle',
rotation: 0,
text: ''
}
},
plotOptions: {
series: {
marker: {
enabled: false
},
shadow: false
}
},
series: [{
type: 'line',
name: '',
data: [null]
}]
};
Я получаю несколько ошибок:
в setHighChartOptions (): невозможно прочитать свойство 'series' из undefined (at, this.chart.series [0]), & не может прочитать «ключи» из неопределенного (в начале цикла ForEach).
Я полагаю, что большая проблема в том, что объект диаграммы не определен, что не имеет смысла, так как я создал его в верхней части класса, а затем при помощи InInit устанавливаю параметры диаграммы.
Надеюсь, вы сможете обнаружить мои ошибки и помочь мне.Спасибо.