我在圈子里跑来跑去,试图找到一种体面的方法来在图表的 xaxis 上获取星期日期。
在下面的小提琴中,它很容易用 dateFormats 钩子添加,但使用 Angular 我无权访问任何全局“Highcharts”对象。那么,如果将 Highcharts 与 Angular 一起使用,我该如何添加自定义格式化程序?
我尝试将格式化程序直接添加到chart.options,如下所示:
{
dateFormats : {
W: function (timestamp) {
var date = new Date(timestamp),
day = date.getUTCDay() === 0 ? 7 : date.getUTCDay(),
dayNumber;
date.setDate(date.getUTCDate() + 4 - day);
dayNumber = Math.floor((date.getTime() - new Date(date.getUTCFullYear(), 0, 1, -6)) / 86400000);
return 1 + Math.floor(dayNumber / 7);
}
},
title: {
text: 'Custom date format'
},
xAxis: {
type: 'datetime',
tickInterval: 7 * 24 * 36e5, // one week
labels: {
format: '{value:Week %W/%Y}',
align: 'right',
rotation: -30
}
},
series: [{
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
pointInterval: 7 * 24 * 36e5,
pointStart: Date.UTC(2013, 0, 7)
}]
}
我还尝试在我的 app.comonent 中导入 highcharts 以获取 highcharts 对象:
import * as highcharts from '../../node_modules/highcharts';
但由于我使用导致“--allowJs”未设置错误的打字稿,而且似乎过于复杂。
编辑:
使用格式化程序,您可以执行类似http://jsfiddle.net/dxyyzgar/的操作
或者:
{
series: data,
legend: {enabled: true},
xaxis: {
type: 'datetime',
formatter: () => {
return this.value
},
title: {
text: 0
}
}
}
但在 Angular 中,“this”引用的是当前组件,而不是 Highcharts 对象。