我正在绑定一个滚动事件来捕获滚动并对其进行处理,我创建了如下指令:
所以我有一个简单的指令,除了:
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