如何在Javascript中与Angular模板一起使用D3-GraphViz



我试图使用d3-graphviz描述这里在一个有角度的模板,如这个。d3-graphviz站点上的演示指示我将以下代码放入index.html文件

<!DOCTYPE html>
<meta charset="utf-8">
<body>
<script src="//d3js.org/d3.v5.min.js"></script>
<script src="https://unpkg.com/@hpcc-js/wasm@0.3.11/dist/index.min.js"></script>
<script src="https://unpkg.com/d3-graphviz@3.0.5/build/d3-graphviz.js"></script>
<div id="graph" style="text-align: center;"></div>
<script>
d3.select("#graph").graphviz()
.renderDot('digraph  {a -> b}');
</script>

然而,当我把这个dashboard.component.html文件(这就是我想要的结果显示),我得到以下错误在控制台

ERROR TypeError: pe.select is not a function
at h.ngOnInit (383.js:1:105583)
at Ki (main.js:1:183802)
at qn (main.js:1:183633)
at ao (main.js:1:183353)
at Ha (main.js:1:210163)
at Gv (main.js:1:210461)
at Ha (main.js:1:210486)
at $v (main.js:1:217064)
at wv (main.js:1:210896)
at Ha (main.js:1:210907)

对此有任何帮助将不胜感激。如有需要,我可以提供更多信息

这是因为当您运行脚本时,d3尚未加载。

d3脚本放在head标签中,然后像这样运行脚本:

document.addEventListener("DOMContentLoaded", function(event) { 
d3.select("#graph").graphviz()
.renderDot('digraph  {a -> b}');
});

这样,脚本将在所有脚本链接加载后执行。

最新更新