You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular使用Highcharts如何仅在API返回空数据时显示无数据提示

解决方案

问题根因

  • Highcharts的lang配置属于全局配置项,仅在初始化阶段读取一次,动态修改实例级chartOptions.lang不会生效
  • 初始配置时如果直接设置了noData提示文本,且初始series为空,图表初始化完成后会立即触发无数据提示,等接口返回数据后才会隐藏,就会出现你遇到的提前闪烁问题

修复方案

我们直接用no-data-to-display模块提供的实例方法手动控制提示的显隐即可,无需动态修改lang配置:

  1. 首先全局配置无数据提示文本,在导入模块后添加全局配置:
// 原有导入逻辑不变
HighchartsMore(Highcharts);
HighchartsExporting(Highcharts);
const noData = require("highcharts/modules/no-data-to-display");
noData(Highcharts);
// 新增全局配置,仅需设置一次
Highcharts.setOptions({
  lang: {
    noData: "无可用数据"
  }
});
  1. 移除chartOptions中的lang: { noData: "" }配置项,初始无需设置该字段
  2. 修改updateChart方法,接口返回数据后手动控制无数据提示的显隐:
updateChart() {
  const self = this;
  setTimeout(() => {
    // 先更新series数据
    self.chartOptions.series = this.data;
    if (this.data.length === 0) {
      // 空数据手动触发无数据提示
      self.chart?.showNoData();
    } else {
      // 有数据手动隐藏提示,同时更新其他配置
      self.chart?.hideNoData();
      self.chartOptions.title = {
        text: "Updated title!"
      };
    }
    self.updateFlag = true;
  }, 1000);
}

注意:代码中加了可选链?.判断图表实例是否存在,避免接口请求速度极快、图表还未初始化完成时报错。

效果验证

修改后图表初始化阶段不会显示无数据提示,等接口返回结果后才会根据数据集是否为空判断是否展示提示,完全符合需求,也不会出现提前闪烁的问题。

内容的提问来源于stack exchange,提问作者Ebison J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:36:08