我目前正在尝试实现由@Jerosoler制作的令人敬畏的库Drawflow(可以在这里找到:https://github.com/jerosoler/Drawflow)在我的PrimeNg项目中。
很棒的用户@BobBDE在这里为这个库定义了类型脚本:https://www.npmjs.com/package/@types/drawflow
我的项目使用PrimeNg与Angular 11和 typescript 4。
我已经使用2 npm命令安装了库和定义。一切看起来都很好。我可以明确地找到JS库和定义,并在Typescript中使用它们。
然而,我有一个未定义的错误,我正在努力找出我做错了什么...
在我的组件html中,我有以下内容:
<div #drawflowDiv></div>
检索组件类型脚本中的div:
@ViewChild('drawflowDiv', {static: true})
drawflowDiv: HTMLElement;
然后在我的ngOnInit中,我有以下内容:
ngOnInit(): void {
console.log(this.drawflowDiv);
const editor = new drawflow(this.drawflowDiv);
editor.reroute = true;
editor.editor_mode = 'edit';
editor.drawflow = {.....}; // Default example json for the library
editor.start();
}
代码中没有任何错误,drawflow库链接正确。console.log给予了我div html元素的所有细节,所以它不是未定义的。你可以在这篇文章中找到控制台的截图。
先谢谢你,希望这里有人能想出解决办法。
先谢了!
enter image description here
3条答案
按热度按时间b1payxdu1#
为了使代码可重用,你也可以将所有内容封装在一个指令中:
指令文件:ng-draw-flow.directive.ts
记住将NgDrawFlowDirective作为声明添加到正在使用它的父特征模块中。
如何使用它的模板示例:
如果运行时遇到问题,请仔细检查模块声明项。例如(部分应用模块):
kkih6yb82#
在创建编辑器时,您可能需要传递nativeElement:
pbpqsu0x3#
您可以在html组件中执行以下操作:
在ngOnInit中: