У меня большой компонент, и я хотел бы избежать ненужных обнаружений изменений для повышения производительности.
Я добавил changeDetection: ChangeDetectionStrategy.OnPush
к @Component
.
Я хотел бы обновитьстиль элемента, если он прокручивается.К сожалению, Angular запускает обнаружение изменений, каждый раз, когда я прокручиваю этот элемент.
Я пытался добавить прослушиватель событий к нативному элементу, чтобы избежать этого, но обнаружение изменений все еще запускается снова, когда я прокручиваю:
@ViewChild('my_element') my_element_ref: ElementRef;
ngOnInit() {
this.my_element_ref.nativeElement.addEventListener('scroll', this.updateStyle);
}
ngAfterViewChecked() {
console.log('check');
}
ngAfterViewChecked
вызывается, даже если this.updateStyle
- пустая функция.Но если я закомментирую this.my_element_ref.nativeElement.addEventListener('scroll', this.onScroll)
, то ngAfterViewChecked
больше не будет вызываться.
Как можно вызвать функцию при прокрутке элемента, но избежать обнаружения изменений Angular?