如何将 Chart.js chartjs-plugin-datalabels npm 包导入到 Angular 7 项目中

pet*_*erc 3 javascript ionic-framework chart.js angular

我有一个 Angular 7 (Ionic 4) 项目,在那里我尝试了 Chart.js 并且需要能够在饼图上自定义绘制一些标签,正如我在这里问的那样。

有人告诉我,我需要为此使用一个单独的包,但我无法使用 npm 包为 Angular 项目导入工作。

我有以下版本...

"chart.js": "^2.8.0",
"chartjs-plugin-datalabels": "^0.6.0",
....
"@angular/*": "^7.2.2",
"typescript": "~3.1.6"
Run Code Online (Sandbox Code Playgroud)

我已按照此处的建议进行尝试,但出现两个错误。

首先vscode给出以下错误...

在此处输入图片说明

此外,添加了额外的描述here

在其他地方,据说导入如下..

import 'chartjs-plugin-datalabels';

但我然后得到编译错误..

    `[ng] ERROR in node_modules/chartjs-plugin-datalabels/types/index.d.ts(5,16): error TS2665: Invalid module name in augmentation. Module 'chart.js' resolves to an untyped module at 'D:/dev/ionic/chartjstest/node_modules/chart.js/dist/Chart.js', which cannot be augmented.`
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何让这个工作?

提前致谢!

小智 5

您可以像这样导入指令:

import * as pluginDataLabels from 'chartjs-plugin-datalabels';
Run Code Online (Sandbox Code Playgroud)

您可以ChartOptions像这样使用插件:

chartOptions: ChartOptions = {
  ...
  plugins: {
    pluginDataLabels 
  }
Run Code Online (Sandbox Code Playgroud)

另一种方法是在图表中调用它:

public barChartPlugins = [pluginDataLabels];
Run Code Online (Sandbox Code Playgroud)

你可以看到它在这里完成。

但是,两种方式都在全局范围内声明它。我想出不在所有图表中看到它们的唯一方法是不显示它们。

chartOptions: ChartOptions = {
  ...
  plugins: {
    datalabels: {
      display: false
    }, 
  }
Run Code Online (Sandbox Code Playgroud)

这也解决了@NakulSharma 的问题。您可以在此处查看插件选项。