У меня сложный вопрос для объяснения, и я ухожу из своей зоны комфорта в том, что касается опыта в Javascript, TrueType, Angular и MxGraph ... Надеюсь, что смогу объяснить.
У меня есть угловой компонент отображения и MxGraph. Я смог интегрировать MxGraph с Angular по этой ссылке ( Как интегрировать mxGraph с Angular 4? ). Даже если я использую Angular 7, решение все еще работает ...
График правильно отображается на странице, и все работает нормально, включая мое переопределение функции graphHandlerMouseUp, которое я делаю с этим кодом:
// Save the position of the mouse when releasing the button: used for
// detecting the target in a drag and drop
mx.graphHandlerMouseUp = mx.mxGraphHandler.prototype.mouseUp;
mx.mxGraphHandler.prototype.mouseUp = function( graph, evt ) {
currentdropX = evt.graphX;
currentdropY = evt.graphY;
mx.graphHandlerMouseUp.apply(this, arguments);
}
Когда я запускаю эту страницу в первый раз, никаких проблем не возникает.
Затем с помощью кнопки я вызываю страницу с другим компонентом (через маршрутизацию). Если с этой страницы я вернусь к первому компоненту (снова через ссылку на маршрутизатор), то страница и компонент с MxGraph будут загружены правильно, НО, когда я использую эту функцию (т. Е. Отпускаю кнопку мыши).
ЭтоМне кажется, это рекурсивная проблема, как, например, когда я выкладываю консольный вывод так:
// Save the position of the mouse when releasing the button: used for
// detecting the target in a drag and drop
mx.graphHandlerMouseUp = mx.mxGraphHandler.prototype.mouseUp;
mx.mxGraphHandler.prototype.mouseUp = function( graph, evt ) {
currentdropX = evt.graphX;
currentdropY = evt.graphY;
// INIFINTE LOOP HERE
console.log("Test");
mx.graphHandlerMouseUp.apply(this, arguments);
}
«Тест» пишется несколько раз, и он постоянно растет. Тем не менее, если я понял, это был правильный способ переопределения функции. Конечно, при первой загрузке страницы «Тест» отображается один раз. При переходе к другому компоненту, а затем обратно к нему, он отображается «бесконечное» количество раз (пока я не достигну: «ОШИБКА RangeError: Превышен максимальный размер стека вызовов») ...
Я также пытался удалитьэто переопределение, и, помимо очевидного отсутствия функциональности, та же проблема возникла с функцией "mxDragSource", которая переопределяется с помощью того же подхода.
Как я уже сказал: я недостаточно опытен в javascript, TrueType, MxGraph или Angular, поэтому любые советы, даже если они очевидны, приветствуются!
Спасибо!