Я привязываю событие прокрутки, чтобы захватить прокрутку и сделать что-то с ней, я создал директиву, подобную приведенной ниже:
Итак, у меня есть простая директива, которая имеет только:
constructor ( private el : ElementRef ,
private renderer : Renderer ) {
this.domAdapter = new browser.BrowserDomAdapter();
this.ruler = new Ruler( this.domAdapter );
}
ngAfterViewInit () : any {
this.renderer.listenGlobal( 'window' , 'scroll' , ()=> {
console.log( 'scrolling' );
} );
return undefined;
}
Это прекрасно работает, ожидайте, что я увижу, что он запускает обнаружение изменений в прокрутке во всем моем приложении.
Это находится внутри одного из моих компонентов:
private aFunction () {
console.log( 'change detected !!!' );
}
У меня aFunction
в шаблоне где-то в некотором компоненте:
<div>{{ aFunction() }}</div>
Раньше aFunction
запускался, только если я обновил какой-либо ввод или нажал кнопку, но теперь он получает это обнаружение изменений в прокрутке!!!
Поэтому мой опыт прокрутки из-за этого лагги!..
Это нормальное поведение Angular2, все события должны срабатывать при обнаружении изменений, но я хочу исключить свое событие прокрутки из этого правила.
Вкратце, как определить событие в Angular2 и превратить его в возможность запускать обнаружение изменений и сделать его ручным.
Я ищу:
this.renderer.listenGlobalButDontFireTheChangeDetection