如何全局取消注销chartjs-plugin-datalabels?

时间:2019-05-17 15:07:38

标签: angular charts

我正在尝试根据全局取消注册chartjs插件 https://chartjs-plugin-datalabels.netlify.com/guide/getting-started.html#registration

我的角度应用程序结构

布局---->

module a---> lazy loaded
      component a1---> chart js chart

module b ----> lazy loaded 
      component b1---> chart js chart
module c---->lazy loaded

这些组件从.ts文件中获取我的选项

我正在使用通用的ts文件

我的.ts文件

import ChartDataLabels from "chartjs-plugin-datalabels";

Chart.plugins.unregister(ChartDataLabels);
// a function which return chart options to component
get myChartOptions()
{
var options = new Options();  //my class
let plugin = options.getPlugin();  //another .ts file which assign value
return options;
}

Expected: Chartjs Data Plugin will get unregistered itself at load.
Actual:   Plugin is not getting itself unregistered. Datalabels are 
          being in on component change also.

How to globally unregister the plugin in .ts file ??

2 个答案:

答案 0 :(得分:2)

在顶级文件导入中:

ChartDataLabels from "chartjs-plugin-datalabels"
Chart from "chart.js"

现在禁用插件:

Chart.plugins.unregister(ChartDataLabels);

我使用React,这三行位于render方法之前的index.js中。

您现在可以通过将其添加到图表组件中来在本地启用该插件:

plugins = {[ChartDataLabels]}

     <Pie 
                type="pie"
                data={data}
                borderWidth="10"
                plugins={[ChartDataLabels]}
                ...

答案 1 :(得分:0)

我发现唯一可行的解​​决方案是在图表的每个实例上禁用它。 https://www.chartjs.org/docs/latest/developers/plugins.html#disable-plugins

示例:

options: {
    plugins: {
        p1: false   // disable plugin 'p1' for this instance
    }
}