在 Angular2 中使用 d3.js

Posted

技术标签:

【中文标题】在 Angular2 中使用 d3.js【英文标题】:Using d3.js in Angular2 【发布时间】:2017-04-16 01:51:24 【问题描述】:

关于它的一些问题,但不幸的是,它们似乎都已被弃用。

我正在使用 angular2 和 angular-cli。

使用npm install d3 安装 d3.js 即时通讯。

我的app.component.ts 文件:

import  Component  from '@angular/core';
import * as d3 from 'd3';

@Component(
  selector: 'app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
)

export class AppComponent 

但不知何故,由于错误,应用程序无法正确加载: Cannot find module 'd3'.

这有点奇怪,尤其是因为 Webstorm 能够看到文件并且没有报告任何问题。

我也尝试安装 c3.js 库,安装后我尝试了相同的导入方式:

npm install c3

import * as c3 from 'c3';

但效果不如第一个。

编辑!

使用命令后:

npm install d3 --save

npm install @types/d3 --save-dev

就像@Tudor Ciotlos 提到的,我很少出错。

[默认] C:\Users\node_modules\@types\c3\index.d.ts:28:41 通用类型“选择”需要 4 个类型参数。 [默认] C:\Users\node_modules\@types\c3\index.d.ts:351:56

模块 '"C:\Users\node_modules/@types/d3/index"' 没有 导出成员 'Rgb'。 [默认] C:\Users\node_modules\@types\c3\index.d.ts:355:47

模块 '"C:/Users/node_modules/@types/d3/index"' 没有 导出成员 'Rgb'。 [默认] C:\Users\ode_modules\@types\c3\index.d.ts:833:51

模块 '"C:/Users/node_modules/@types/d3/index"' 没有 导出成员 'Rgb'。 [默认] C:\Users\node_modules\@types\c3\index.d.ts:943:58

模块 '"C:/Users/node_modules/@types/d3/index"' 没有 导出成员 'Rgb'。

有人知道我为什么会收到这些错误吗?

【问题讨论】:

【参考方案1】:

另一个探索途径是使用包装 D3 功能的 ng 库。 例如,d3-ng2-service 包装 D3 v.4 以在 Angular 中使用,同时提供 TS 类型。

【讨论】:

【参考方案2】:

这也发生在我身上 - 我正在使用 angular-cli 和 d3 v4 并且只在开发中遇到错误。

除了 import * as d3 from "d3"; 之外,将以下代码添加到您的 typings.d.ts 文件中:

declare module 'd3' 
  export * from 'd3-array';
  export * from 'd3-axis';
  export * from 'd3-brush';
  export * from 'd3-chord';
  export * from 'd3-collection';
  export * from 'd3-color';
  export * from 'd3-dispatch';
  export * from 'd3-drag';
  export * from 'd3-dsv';
  export * from 'd3-ease';
  export * from 'd3-force';
  export * from 'd3-format';
  export * from 'd3-geo';
  export * from 'd3-hierarchy';
  export * from 'd3-interpolate';
  export * from 'd3-path';
  export * from 'd3-polygon';
  export * from 'd3-quadtree';
  export * from 'd3-queue';
  export * from 'd3-random';
  export * from 'd3-request';
  export * from 'd3-scale';
  export * from 'd3-selection';
  export * from 'd3-shape';
  export * from 'd3-time';
  export * from 'd3-time-format';
  export * from 'd3-timer';
  export * from 'd3-transition';
  export * from 'd3-voronoi';
  export * from 'd3-zoom';

希望这会有所帮助!

【讨论】:

【参考方案3】:

除了安装 d3 包之外,您还必须安装相关的类型:

npm install d3 --save
npm install @types/d3 --save-dev

您可以在 GitHub 上的 angular-cli 自述文件中找到有关 3rd Party Library Installation 和 Global Library Installation 的更多信息。

【讨论】:

@H.Doe 我刚刚使用 angular-cli 在新安装的 angular2 应用程序上尝试了这些步骤,并且它有效,我没有遇到像你这样的错误。您能否尝试重新安装您的应用程序? 是的。有用。感谢你。但是错误仍然出现。但它们不会影响应用程序。

以上是关于在 Angular2 中使用 d3.js的主要内容,如果未能解决你的问题,请参考以下文章

在 Angular2 项目中使用 TweenMax

在 Angular2+Webpack 中使用 templateUrl 的相对路径

如何在提交按钮表单中使用路由 - Angular2

在Angular2中,使用继承还是注入依赖?

在 Angular2 和 Webpack 中使用 CDN 文件

在angular2中使用lodash时出错[重复]