> 웹 프론트엔드 > CSS 튜토리얼 > Angular에서 경로 전환 중에 로딩 화면을 구현하는 방법은 무엇입니까?

Angular에서 경로 전환 중에 로딩 화면을 구현하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-07 14:57:12
원래의
658명이 탐색했습니다.

How to Implement a Loading Screen During Route Transitions in Angular?

Angular 2에서 경로 전환 중 로딩 화면 표시

Angular Router는 변경 사항을 모니터링하고 이에 따라 UI를 수정할 수 있는 탐색 이벤트를 제공합니다. 이러한 이벤트에는 NavigationStart, NavigationEnd, NavigationCancel 및 NavigationError가 포함됩니다.

탐색 이벤트 사용

경로 변경 중에 로딩 화면을 표시하려면 루트 구성 요소(일반적으로 앱) 내에서 이러한 탐색 이벤트를 구독할 수 있습니다. .comComponent.ts) 실행된 특정 이벤트에 따라 로딩 UI를 토글합니다.

먼저 필요한 이벤트 관련 클래스를 @angular/router 루트 구성 요소 내에서 부울 플래그 로드를 정의합니다.

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 및 렌더러를 활용하여 로딩 스피너의 성능을 향상시킬 수 있습니다. 아래:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿