在selectAll后尝试加入时如何解决“ .join不是函数”?

时间:2019-03-28 12:39:27

标签: angular d3.js

我正在尝试使用以下示例绘制Zoomable SUnburst图表:https://vizhub.com/undefined/7babe7cceb394cd1bc93157a29f8c161

该代码在普通js中运行,但是当我尝试将其导入Angular时,它将引发以下错误:

  

错误TypeError:“ svg.selectAll(...)。data(...)。join不是函数”

行抛出错误是:

const path = svg.selectAll('path')
      .data(root.descendants().slice(1))
      .join('path')
      .attr('fill', d => {
        while (d.depth > 1) { d = d.parent; }
        return color(d.data.name);
      })
      .attr('fill-opacity', d => arcVisible(d.current) ? (d.children ? 0.6 : 0.4) : 0)
      .attr('d', d => arc(d.current));

我尝试将类添加到svg元素,但这无济于事。删除它不会呈现图形,并且每个联接都会引发错误。此外,已更新为最新的d3,但无济于事 角版本为6。

控制台日志

g.append('g')
 .selectAll('path')
 .data(root.descendants().slice(1))

enter image description here

2 个答案:

答案 0 :(得分:1)

join('path')替换为enter().append('path')

答案 1 :(得分:0)

我有同样的问题。我通过升级到最新的d3版本(从5.x到5.16)修复了它。