Я не специалист по javascript и Angular, и я не очень хорошо понимаю, как работает маршрутизация. Так как в одном компоненте я переопределяю функцию, вызывающую ее super с помощью «apply», во второй раз, когда я «маршрутизирую» этот компонент, происходит бесконечный рекурсивный вызов.
Проблема в следующем: у меня есть компонент Aи компонент B
Компонент A выполняет:
<a [routerLink]="['/nodes', fullnode.my_node.id]" [state]="fullnode">Edit node 0</a>
Компонент B содержит код для переопределения библиотечной функции MxGraph:
mx.graphHandlerMouseUp = mx.mxGraphHandler.prototype.mouseUp;
mx.mxGraphHandler.prototype.mouseUp = function(graph, evt) {
currentdropX = evt.graphX;
currentdropY = evt.graphY;
mx.graphHandlerMouseUp.apply(this, arguments);
}
И средство возврата к компонентуA:
router.navigate(['/game']);
Я задал подобный вопрос здесь: Бесконечный цикл при переопределении graphHandlerMouseUp на MxGraph с использованием Angular . Но я чувствую, что проблема не в самой библиотеке mxGraph, а в том, как Angular загружает компоненты.
Когда я делаю: Компонент A -> Компонент B mx.graphHandlerMouseUp сначала не определен, а затем становитсяопределено в ngAfterViewInit () компонента B.
Когда я это сделаю: Компонент A -> Компонент B -> Компонент A -> Компонент B mx.graphHandlerMouseUp уже определен, и именно здесь происходит рекурсия infinte (потому чтоof the apply).
Быстрое исправление может проверять, если mx.graphHandlerMouseUp уже определен, и это на самом деле работает. Тем не менее, я переопределяю многие другие функции той же библиотеки, и даже если они не аварийно завершают работу, они не работают (некоторые из них даже не переходя назад и вперед к компоненту A, просто используя их дважды) ...
Любые разъяснения или предложения приветствуются ...