Javascript 路线改变时的角度变化检测

Javascript 路线改变时的角度变化检测,javascript,angular,dom,routes,angular2-changedetection,Javascript,Angular,Dom,Routes,Angular2 Changedetection,我在Angular阅读了一些关于更改检测的好文章,对它是什么以及如何工作有了一些很好的理解。但是到目前为止,我读过的每一篇文章都只关注组件上发生某些事件时的更改检测,或者当某些输入属性更改时的检测。我还没有找到任何文章关注路由更改时会发生什么?在这种情况下,更改检测是如何工作的?此外,Angular是否会将所有HTML/DOM更新一次推送到浏览器,还是在发现任何DOM更新后会不断向浏览器提供信息?路由不会触发更改检测。它对更改检测所做的唯一特定操作是激活路由器出口组件: @Directive({

我在Angular阅读了一些关于
更改检测的好文章,对它是什么以及如何工作有了一些很好的理解。但是到目前为止,我读过的每一篇文章都只关注组件上发生某些事件时的
更改检测
,或者当某些
输入
属性更改时的检测。我还没有找到任何文章关注
路由
更改时会发生什么?在这种情况下,
更改检测
是如何工作的?此外,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)等导航,一旦代码完成执行更改检测过程,就会启动

另外,Angular是否会将所有HTML/DOM更新一次推送到浏览器 或者,一旦发现任何问题,它是否会不断地向浏览器提供信息 DOM更新

它在通过每个组件时逐个元素更新DOM元素。有关更改检测的最全面的解释,请阅读中提到的所有文章:


感谢您的评论和解释。我一直很喜欢读你的文章,尽管我读了其中的大部分(在文章中提到),我还是会从另一个角度再读一遍。谢谢。@ImranLatif,很高兴你发现他们对你有帮助。如果有帮助的话,你也可以把我的答案标记为接受。祝你好运