Angular升级到8后,拖动事件出现问题(使用D3)

时间:2019-10-18 22:07:49

标签: javascript angular d3.js

我正在将我们的应用程序从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将拖动事件侦听器添加到节点。

任何对此的见解将不胜感激!如果您需要更多信息,我很乐意提供更多信息。

0 个答案:

没有答案