D3 не может прочитать свойство ‘alphaTarget’ неопределенного

#javascript #angular #d3.js #undefined

#javascript #угловой #d3.js #не определено

Вопрос:

Я пытаюсь использовать библиотеку D3 в Angular 8. Моя проблема в том, что я пытаюсь сделать свои узлы перетаскиваемыми, но у меня ошибка «Не удается прочитать свойство ‘alphaTarget’ неопределенного значения», и я не могу найти ошибку в своем коде.

Ошибка возникает в этом фрагменте «graph.simulation.alphaTarget (0.1).restart ();» но я не знаю почему. Что здесь не так?

Кто-нибудь может мне помочь?

d3.service.ts

   applyDraggableBehaviour(element, node: Node, graph: ForceDirectedGraph) {
const d3element = d3.select(element);



function started(event) {
  /** Preventing propagation of dragstart to parent elements */
  event.sourceEvent.stopPropagation();


  if (!event.active) {
    graph.simulation.alphaTarget(0.1).restart();
  }

  event.fx = event.x;
  event.fy = event.y;

  event.on('drag', dragged).on('end', ended);

  function dragged() {
    
    node.fx = event.x;
    node.fy = event.y;
  }

  function ended() {
    if (!event.active) {
      graph.simulation.alphaTarget(0);
    }
    node.fx = null;
    node.fy = null;
  }
}

d3element.call(d3.drag()
.on('start', started));
 

}

Комментарии:

1. console.log (график) в начале вашей функции, и вы увидите, что моделирование не существует внутри

2. Да, вы правы. «публичная симуляция: d3.Simulation<any, any>;» Это симуляция ForceDirectedGraph . Но я до сих пор не знаю, в чем проблема

3. вы знаете, что теперь делать?

4. К сожалению, нет

5. @Daniel Если graph это ваша симуляция, как вы сказали, то разве вы просто не хотите graph.alphaTarget(0.1) ?