D3.js d3 V4.2.1 TypeScript 2.0导入d3多选项时出错

D3.js d3 V4.2.1 TypeScript 2.0导入d3多选项时出错,d3.js,typescript,systemjs,jspm,D3.js,Typescript,Systemjs,Jspm,我正在尝试使用jspm和systemjs将D3V4导入到typescript项目中。我可以用这个正确导入d3 import * as d3 from 'd3'; 这是可行的,它允许我进行选择等。我尝试使用attr函数并向它传递一个不起作用的对象。我发现D3V4将其作为一个单独的模块包含在内 下载模块d3后,使用jspm选择多个。我试着像这样把它导入到我的项目中 import * as d3 from 'd3'; import 'jspm_packages/npm/d3-selection-mu

我正在尝试使用jspm和systemjs将D3V4导入到typescript项目中。我可以用这个正确导入d3

import * as d3 from 'd3';
这是可行的,它允许我进行选择等。我尝试使用attr函数并向它传递一个不起作用的对象。我发现D3V4将其作为一个单独的模块包含在内

下载模块d3后,使用jspm选择多个。我试着像这样把它导入到我的项目中

import * as d3 from 'd3';
import 'jspm_packages/npm/d3-selection-multi@1.0.0';
然后我尝试使用attrs函数,但控制台记录了以下错误

(索引):40错误:(SystemJS) d3.selectAll(…).data(…).style(…).attrs不是函数(…)

我也得到了一些编译错误,我得到了所有的时间,但他们总是编译和代码运行

error TS2307: Cannot find module 'd3'
error TS1110: Type expected

有谁能解释一下我做错了什么并提供解决方案吗?

下面的方法应该有效

  import * as d3 from 'd3';
  import 'd3-selection-multi';
工作“
jspm
+
d3选择多个”
”示例:


如果需要导入所有D3,请使用
jspm安装npm:D3
。这将增加相当多的膨胀。请记住,jspm附带了汇总功能。

我最终不得不创建一个“bundle”文件并导入它,而不是导入单个d3包。这可能并不理想,但它可以工作(为了节省空间,我已经注释掉了不需要的包):

要使用此功能,我只需:

import * as D3 from './d3.bunde.ts';

注意:可能没关系,但我正在使用angular cli构建我的项目。

这不是问题的原因,但是如果
style
也使用了一个对象,它必须是
style
@Gerardo Furtado是的,但是如何让它们工作而不抛出错误首先,检查是否加载了多个选择。创建一个简单的代码,比如
var test=d3.select(“foo”).attrs({“bar”:“baz});
,看看它是否有效。@Gerardo Furtado它不起作用。我得到以下错误:d3.select(…).attrs不是一个functionYep,因此您可能在导入多个选择时遇到问题。让我们拭目以待是否有人来帮助您。同时,作为一种解决方法,请记住,您始终可以使用多个
attr
chained。angular-cli对此表示不满。
\u网页包\u IMPORTED\u模块\u 4\u d3\uuuuuuuuuuuuuuu。选择(…)。attrs不是一个函数
:-(@ysteinAmundsen)你有没有发现这个问题?我遇到了完全相同的困惑问题。@Cowman我在这里发布了我的解决方案作为答案:这对我很有用!此外,我在我的网页包配置中将它们添加到我的供应商条目中,这样它就不会将d3代码放在我的应用条目中。
import * as D3 from './d3.bunde.ts';