Я использую ngx-bootstrap v1.9.1 и работаю над Angular 2. Я обнаружил, что обнаружение изменений запускается для всего моего приложения при каждом нажатии в любом месте моего документа.(Только что сделал консольный вход в ngDoCheck()
моего компонента приложения).При проверке прослушивателей событий в браузере я обнаружил, что к document
добавлено несколько click
прослушивателей.Когда количество визуализированных компонентов увеличивается, эти обработчики щелчков приводят к возникновению огромных обнаружений изменений, что делает приложение очень медленным.
Методом исключения я обнаружил, что это директива dropdownToggle
, которая присоединяет обработчики щелчков документов,Обращаясь к документам для ngx-bootstrap, я обнаружил, что они предоставляют конфигурацию, при которой раскрывающийся список не закроется, если я щелкну где-нибудь еще в документе.
providers: [{provide: BsDropdownConfig, useValue: {autoClose: false}}]
Это прекрасно работаетпросто из-за того, что выпадающий список не закрывается, если я щелкаю где-то еще на документе, но прослушиватели событий, прикрепленные к документу, все еще существуют, поэтому моя проблема остается той же!Везде, где я нажимаю на кнопку, обнаруживается изменение экрана.
Есть ли способ удалить эти обработчики, сохранив использование dropdownToggle?Или я должен сам прибегнуть к пользовательским выпадающим спискам?