如何在 Angular 中的路線轉換期間實作載入畫面?
在 Angular 2 中的路由轉換期間顯示載入畫面
Angular Router 提供導航事件,使您能夠監視變更並相應地修改 UI。這些事件包括 NavigationStart、NavigationEnd、NavigationCancel 和 NavigationError。
使用導航事件
要在路線變更期間顯示載入畫面,您可以在根元件(通常是應用程式)中訂閱這些導航事件.component.ts) 並根據觸發的特定事件切換載入UI。
首先,從@angular/router 並在根組件中定義一個布林標誌,loading。
import { Router, Event as RouterEvent, NavigationStart, NavigationEnd, NavigationCancel, NavigationError } from '@angular/router' @Component({}) export class AppComponent { loading = true; // Initializing to true to show loading spinner on first load constructor(private router: Router) { this.router.events.subscribe((e : RouterEvent) => { this.navigationInterceptor(e); }) } }
在 navigationInterceptor 方法中,您可以監聽 NavigationStart、NavigationEnd、NavigationCancel 和 NavigationError 事件並切換載入標誌基於每個事件。
// Shows and hides the loading spinner during RouterEvent changes navigationInterceptor(event: RouterEvent): void { if (event instanceof NavigationStart) { this.loading = true; } if (event instanceof NavigationEnd) { this.loading = false; } if (event instanceof NavigationCancel) { this.loading = false; } if (event instanceof NavigationError) { this.loading = false; } }
在根模板中,您可以使用條件渲染來根據載入顯示載入疊加層標誌的狀態。
<div>
遵循此方法,您可以在 Angular 2 應用程式中的路線轉換期間有效地顯示載入畫面。
效能最佳化
如果效能為一個問題,您可以利用NgZone 和Renderer 來增強載入微調器的效能,如更新的程式碼片段所示如下:
private _navigationInterceptor(event: RouterEvent): void { if (event instanceof NavigationStart) { this.ngZone.runOutsideAngular(() => { this.renderer.setElementStyle( this.spinnerElement.nativeElement, 'opacity', '1' ) }) } if (event instanceof NavigationEnd) { this._hideSpinner() } // Set loading state to false in both of the below events to // hide the spinner in case a request fails if (event instanceof NavigationCancel) { this._hideSpinner() } if (event instanceof NavigationError) { this._hideSpinner() } } private _hideSpinner(): void { this.ngZone.runOutsideAngular(() => { this.renderer.setElementStyle( this.spinnerElement.nativeElement, 'opacity', '0' ) }) }
此技術在更新微調器的不透明度時繞過Angular 的更改檢測機制,從而實現更平滑的過渡。
以上是如何在 Angular 中的路線轉換期間實作載入畫面?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

在元素個數不固定的情況下如何通過CSS選擇第一個指定類名的子元素在處理HTML結構時,常常會遇到元素個數不�...

關於Flex佈局中紫色斜線區域的疑問在使用Flex佈局時,你可能會遇到一些令人困惑的現象,比如在開發者工具(d...

格子呢是一塊圖案布,通常與蘇格蘭有關,尤其是他們時尚的蘇格蘭語。在Tartanify.com上,我們收集了5,000多個格子呢
