Angular: Change Detection
Методы управления CD
ChangeDetectorRef.detectChanges()— запускает CD для этого компонента и его детей, уважая CD-стратегию детей.ChangeDetectorRef.markForCheck()— не запускает CD, а помечает всехOnPush-родителей для проверки в текущем или следующем цикле CD.ApplicationRef.tick()— запускает CD для всего приложения, уважая CD-стратегии.
NgZone и runOutsideAngular
NgZone позволяет выполнять код вне зоны Angular, чтобы не запускать change detection — полезно для оптимизации производительности (например, частые события: скролл, mousemove, анимации).
constructor(private ngZone: NgZone) {
ngZone.runOutsideAngular(() => {
// код вне change detection Angular
// zone.js не триггерит CD
});
}Конфигурация ngZone: 'noop' полностью отключает zone.js и автоматический change detection — тогда CD нужно запускать вручную.