#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)
?