Comments 6
li:focus { pointer-events: none; }
Кроме того, это попытка решить конкретную ситуацию, а не комплексный кейс. В работе у меня довольно часто встречаются такие случаи с выходом из обработчика события без каких-либо действий. Я взял данный пример, потому что с него обратил на это внимание и потому, что движение мыши выстреливает часто. Ещё гипотетический кейс сходу – событие скролла и подгрузка новых данных при приближении к краю.
Описанный в статье вариант намного и лучше и правильнее и чаще применим.
Можно ещё removeEventListener сделать для Dom элемента, и впилить свой вместо него
В этом случае ангуляр не будет реагировать на событие, а вы сможете его динамически убирать добавлять
Вклинивание во внутреннюю обработку событий Angular — затея авантюрная, так как внутренняя реализация может измениться в будущем.
На сколько я понимаю, EventManagerPlugin
не является частью публичного API, и ориентироваться на него действительно может быть чревато различными казусами, даже в случае смены минорной версии Ангуляра. Плагины хоть и выглядят способом предназначенным для внедрения подобной логики, но сам EventManager
входит в публичное API, а значит его подмена в нужном модуле уже не будет являться авантюрной затеей.
Спасибо за статью, было интересно почитать, и к слову не могу не попиариться: писал как-то о схожим решении своей проблемы, там есть показания профайлера и демонстрационное приложение, наглядно показывающие для чего подобные оптимизации в контексте Ангуляра нужны.
Чтобы было не так:
А так:
Оптимизация обработки событий в Angular