我正在将我们的应用程序从Angular 6升级到8(包括更新许多依赖项),并且遇到了拖动d3节点的问题。升级后,无论何时尝试拖动节点,现在都会出现此错误:
breadcrumbs.js:64 TypeError: Cannot read property 'ctrlKey' of null
at SVGRectElement.defaultFilter (drag.js:10)
at SVGRectElement.mousedowned (drag.js:51)
at SVGRectElement.<anonymous> (on.js:27)
at SVGRectElement.sentryWrapped (helpers.js:74)
at ZoneDelegate.invokeTask (zone-evergreen.js:391)
at Object.onInvokeTask (core.js:39679)
at ZoneDelegate.invokeTask (zone-evergreen.js:390)
at Zone.runTask (zone-evergreen.js:168)
at ZoneTask.invokeTask [as invoke] (zone-evergreen.js:465)
at invokeTask (zone-evergreen.js:1603)
at SVGRectElement.globalZoneAwareCallback (zone-evergreen.js:1629)
当我在chrome开发工具中查看drag.js
时,会得到以下信息:
import {dispatch} from "d3-dispatch";
import {event, customEvent, select, mouse, touch} from "d3-selection";
import nodrag, {yesdrag} from "./nodrag.js";
import noevent, {nopropagation} from "./noevent.js";
import constant from "./constant.js";
import DragEvent from "./event.js";
// Ignore right-click, since that should open the context menu.
function defaultFilter() {
return !event.ctrlKey && !event.button;
}
...
如果我在defaultFilter()
内进行断点并查看在文件顶部导入的event
,则它是一个事件对象,具有正确的目标,并且函数内的事件对象除外({{ 1}})为空。
此外,我们在指令中使用return !event.ctrlKey && !event.button
将拖动事件侦听器添加到节点。
任何对此的见解将不胜感激!如果您需要更多信息,我很乐意提供更多信息。