Я был в подобном положении, и после большого разочарования я нашел решение.Похоже, что когда я перетаскивал элемент по экрану - даже кратко, движок Angular перегружался и выстраивал в очередь нелепое количество вызовов onDrop и / или onDragEnter.И что, когда Angular перехватывает эти события, он также предполагает, что что-то в угловых компонентах изменилось, и проходит через процедуры обнаружения изменений.
Каждый раз ...
Что я сделал, чтобы решить эту проблему, так это отключил обнаружение изменений, когда перетаскивание началось, и снова включил его, когда перетаскивание завершилось.
Вот краткий намек на то, что я сделал:
- импорт ChangeDetectorRef из '@ angular / core'
- вставляет ChangeDetector в ваш конструктор: constructor (private cdr: ChangeDetectorRef)
- вызов отсоединения от dragStart: this.chngDetRef.detach ();
- повторный вызов вызова с перетаскивания и перетаскивания: this.chngDetRef.reattach ();
Если ваш компонент находится глубоко на вашей странице, вам, возможно, придется отменить обнаружение изменений на более высоком уровне, чтобы увидеть результаты.
Удачи!