Значение элемента меню HighCharts не обновлено - PullRequest
0 голосов
/ 10 марта 2020

Мне нужно перевести мои высокие чарты, когда пользователь выбирает другой язык. У меня есть chartservice, который прослушивает translationService и назначает значение, полученное от translationService, для загрузки атрибута CSV диаграммы. вот код "

private downloadCsvText= '';
this._translateService.get('TL_DOWNLOAD_CSV').subscribe((res: string) => this.downloadCsvText=res);

Highcharts.setOptions({
    global: { useUTC: false },
    lang: {
        noData: this.chartNoData,
        downloadCSV: this.downloadCsvText
    }
});

и в моих методах, которые создают диаграмму, у меня есть:

 exporting: {
                filename: 'MyChart',
                buttons: {
                    contextButton: {
                        menuItems: ['downloadCSV']
                    }
                },
                csv: {
                    itemDelimiter: ';'
                },
                fallbackToExportServer: false
            }

Однако, в тот момент, когда пользователь меняет язык, menuItems является единственным вещь, которая не переведена. Любое руководство приветствуется.

Я использую

  • Angular 8
  • "highcharts": "6.1.1"
  • "highcharts-export-csv": "= 1.4.8",
  • "highcharts-pattern-fill": "3.0.3",

1 Ответ

1 голос
/ 10 марта 2020

В настоящее время ваш код выполняет что-то похожее, как показано в этой демонстрации: https://jsfiddle.net/BlackLabel/kL5xahve/ - что неправильно, поскольку параметры определены после инициализации диаграммы.

Самое простое решение уничтожить диаграмму и заново инициализировать ее после смены языка.

Демо: https://jsfiddle.net/BlackLabel/wLhxc0qb/

var chartOptions = {

  series: [{
    data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175]
  }],

  exporting: {
    buttons: {
      contextButton: {
        menuItems: ["downloadCSV"]
      }
    },
  }
};

var chart = Highcharts.chart('container', chartOptions);

Highcharts.setOptions({
  lang: {
    downloadCSV: 'test'
  }
});

chart.destroy();

Highcharts.chart('container', chartOptions);
...