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

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

DDD
풀어 주다: 2024-12-06 20:38:12
원래의
492명이 탐색했습니다.

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

Angular 2에서 라우팅하는 동안 로딩 화면을 표시하는 방법

경로 간 전환 중에 로딩 화면을 표시하면 시각적 피드백을 제공하여 사용자 경험이 향상됩니다. Angular 2는 이러한 전환 관리를 위한 기본 지원을 제공합니다.

로딩 화면 구현의 핵심은 Angular의 RouterEvents를 구독하는 것입니다. 이러한 이벤트는 탐색 프로세스의 현재 상태에 대한 정보를 제공합니다.

향상된 성능에 대한 개선된 답변

더 나은 성능을 위해서는 ngIf를 피하는 것이 좋습니다. 로딩 스피너의 조건부 표시. 대신 NgZone 및 렌더러를 활용하여 Angular의 변경 감지 주기 외부에서 스피너의 가시성을 전환합니다.

@Component({})
export class AppComponent {

  @ViewChild('spinnerElement') spinnerElement: ElementRef

  constructor(private router: Router,
              private ngZone: NgZone,
              private renderer: Renderer) {
    router.events.subscribe(this._navigationInterceptor)
  }

  private _navigationInterceptor(event: RouterEvent): void {
    if (event instanceof NavigationStart) {
      // Show spinner outside Angular's zone to prevent change detection
      this.ngZone.runOutsideAngular(() => {
        this.renderer.setElementStyle(
          this.spinnerElement.nativeElement,
          'opacity',
          '1'
        )
      })
    }

    if (event instanceof NavigationEnd) {
      this._hideSpinner()
    }
    // Hide spinner in case of failure
    if (event instanceof NavigationCancel || event instanceof NavigationError) {
      this._hideSpinner()
    }
  }

  private _hideSpinner(): void {
    // Hide spinner outside Angular's zone to prevent change detection
    this.ngZone.runOutsideAngular(() => {
      this.renderer.setElementStyle(
        this.spinnerElement.nativeElement,
        'opacity',
        '0'
      )
    })
  }
}
로그인 후 복사

HTML

<div class="loading-overlay" #spinnerElement>
로그인 후 복사

RouterEvents를 구독하고 조건부로 변경 감지 외부에서 스피너를 로드하면 보다 부드럽고 응답성이 뛰어난 탐색을 달성할 수 있습니다. 경험하세요.

위 내용은 Angular 2에서 경로 전환 중에 로딩 화면을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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