Angular 路线变化的变化检测
Angular Change Detection on a route change
我在 Angular 中阅读了一些关于 Change Detection
的好文章,并对它是什么以及它的工作原理有了一定的了解。但是到目前为止,我读过的每篇文章都只关注 Change Detection
当组件上发生某些事件或某些 input
属性 发生变化时等。我还没有找到任何文章关注当 route
改变时会发生什么? Change Detection
在这种情况下如何运作?此外,Angular 是立即将所有 HTML/DOM 更新推送到浏览器,还是一旦发现任何 DOM 更新就不断地向浏览器提供信息?
路由不会触发更改检测。它唯一特定于变化检测的是 正在激活的路由器出口组件:
@Directive({selector: 'router-outlet', exportAs: 'outlet'})
export class RouterOutlet implements OnDestroy, OnInit {
...
activateWith(activatedRoute: ActivatedRoute, resolver: ComponentFactoryResolver|null) {
...
// Calling `markForCheck` to make sure we will run the change detection when the
// `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.
this.changeDetector.markForCheck();
this.activateEvents.emit(this.activated.instance);
}
路由器由 NgZone 拦截的某些事件 UI 或其他(setTimeout、XHR)等导航,一旦代码执行完更改检测过程就会启动。
Also, does Angular pushes all HTML/DOM updates at once to the browser
or does it keep feeding the browser constantly as soon as it finds any
DOM update?
随着每个组件的进展,它逐个元素更新 DOM。如需更改检测的最全面解释,请阅读以下所有文章:
我在 Angular 中阅读了一些关于 Change Detection
的好文章,并对它是什么以及它的工作原理有了一定的了解。但是到目前为止,我读过的每篇文章都只关注 Change Detection
当组件上发生某些事件或某些 input
属性 发生变化时等。我还没有找到任何文章关注当 route
改变时会发生什么? Change Detection
在这种情况下如何运作?此外,Angular 是立即将所有 HTML/DOM 更新推送到浏览器,还是一旦发现任何 DOM 更新就不断地向浏览器提供信息?
路由不会触发更改检测。它唯一特定于变化检测的是
@Directive({selector: 'router-outlet', exportAs: 'outlet'})
export class RouterOutlet implements OnDestroy, OnInit {
...
activateWith(activatedRoute: ActivatedRoute, resolver: ComponentFactoryResolver|null) {
...
// Calling `markForCheck` to make sure we will run the change detection when the
// `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.
this.changeDetector.markForCheck();
this.activateEvents.emit(this.activated.instance);
}
路由器由 NgZone 拦截的某些事件 UI 或其他(setTimeout、XHR)等导航,一旦代码执行完更改检测过程就会启动。
Also, does Angular pushes all HTML/DOM updates at once to the browser or does it keep feeding the browser constantly as soon as it finds any DOM update?
随着每个组件的进展,它逐个元素更新 DOM。如需更改检测的最全面解释,请阅读以下所有文章: