簡體   English   中英

路線變化的角度變化檢測

[英]Angular Change Detection on a route change

我已經閱讀了一些有關Angular中的Change Detection好文章,並對它是什么以及它如何工作建立了一定的了解。 但是,到目前為止,我讀過的每篇文章都只針對組件上發生某個事件或某些input屬性發生更改等時的Change Detection 。我還沒有找到針對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);
    }

路由器由某個事件UI或其他事件UI(setTimeout,XHR)等導航,這些事件UI被NgZone攔截,並且一旦完成更改檢測過程的代碼開始執行。

另外,Angular是將所有HTML / DOM更新一次推送到瀏覽器,還是在找到任何DOM更新后立即持續不斷地供給瀏覽器?

隨着每個組件的進行,它逐個元素地更新DOM。 有關變更檢測的最全面說明,請閱讀以下文章中提到的所有文章:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM