Heim Web-Frontend CSS-Tutorial Wie kann ich bei Routenänderungen in Angular 2 einen Ladebildschirm anzeigen?

Wie kann ich bei Routenänderungen in Angular 2 einen Ladebildschirm anzeigen?

Dec 09, 2024 pm 09:44 PM

How Can I Display a Loading Screen During Route Changes in Angular 2?

Anzeige eines Ladebildschirms während Routenänderungen in Angular 2

In Angular 2 kann das Navigieren zwischen Routen die Anzeige eines Ladebildschirms auslösen, Bietet einen visuellen Hinweis darauf, dass die Anwendung umgestellt wird.

Navigation verwenden Ereignisse

Der Angular Router bietet Navigationsereignisse, die den Fortschritt von Routenänderungen verfolgen. Durch das Abonnieren dieser Ereignisse können Sie die Benutzeroberfläche entsprechend bearbeiten, einschließlich der Anzeige eines Ladebildschirms. So geht's:

app.component.ts (Stammkomponente)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

import { Router, Event as RouterEvent, NavigationStart, NavigationEnd, NavigationCancel, NavigationError } from '@angular/router';

 

@Component({/* ... */})

export class AppComponent {

 

  // Initialize loading indicator

  loading = true;

 

  constructor(private router: Router) {

    router.events.subscribe((e: RouterEvent) => this.navigationInterceptor(e));

  }

 

  navigationInterceptor(event: RouterEvent): void {

    if (event instanceof NavigationStart) {

      this.loading = true;

    }

    if (event instanceof NavigationEnd) {

      this.loading = false;

    }

    if (event instanceof NavigationCancel || event instanceof NavigationError) {

      this.loading = false;

    }

  }

}

Nach dem Login kopieren

app.component.html (Stammansicht)

1

2

3

<div class="loading-overlay" *ngIf="loading">

  <!-- Show loading animation, e.g., spinner -->

</div>

Nach dem Login kopieren

Leistungssteigerung

Für Verbesserte Leistung: Nutzen Sie Angulars NgZone und Renderer, um die Sichtbarkeit des Ladebildschirms zu steuern. Dadurch wird die Änderungserkennung umgangen, was zu flüssigeren Animationsübergängen führt:

app.component.ts (Aktualisierte Stammkomponente)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

import { NgZone, Renderer, ElementRef, ViewChild } from '@angular/core';

 

@Component({/* ... */})

export class AppComponent {

 

  @ViewChild('spinnerElement')

  spinnerElement: ElementRef;

 

  constructor(private ngZone: NgZone,

              private renderer: Renderer,

              private router: Router) {

    router.events.subscribe(this._navigationInterceptor);

  }

 

  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();

    }

    if (event instanceof NavigationCancel || event instanceof NavigationError) {

      this._hideSpinner();

    }

  }

 

  private _hideSpinner(): void {

    this.ngZone.runOutsideAngular(() => {

      this.renderer.setElementStyle(

        this.spinnerElement.nativeElement,

        'opacity',

        '0'

      );

    });

  }

}

Nach dem Login kopieren

app.component.html (Aktualisierte Stammansicht)

1

<div class="loading-overlay" #spinnerElement>

Nach dem Login kopieren

Durch die Implementierung dieser Techniken können Sie die Sichtbarkeit einer Ladung effektiv verwalten Bildschirm während der Routennavigation in Angular 2, wodurch das Benutzererlebnis durch klares visuelles Feedback verbessert wird.

Das obige ist der detaillierte Inhalt vonWie kann ich bei Routenänderungen in Angular 2 einen Ladebildschirm anzeigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Erstellen Sie ein JavaScript -Kontaktformular mit dem Smart Forms Framework Erstellen Sie ein JavaScript -Kontaktformular mit dem Smart Forms Framework Mar 07, 2025 am 11:33 AM

Erstellen Sie ein JavaScript -Kontaktformular mit dem Smart Forms Framework

Hinzufügen von Kastenschatten zu WordPress -Blöcken und -Elementen Hinzufügen von Kastenschatten zu WordPress -Blöcken und -Elementen Mar 09, 2025 pm 12:53 PM

Hinzufügen von Kastenschatten zu WordPress -Blöcken und -Elementen

Machen Sie Ihren ersten Seltsamen -Sufle -Übergang Machen Sie Ihren ersten Seltsamen -Sufle -Übergang Mar 15, 2025 am 11:08 AM

Machen Sie Ihren ersten Seltsamen -Sufle -Übergang

Arbeiten mit GraphQL Caching Arbeiten mit GraphQL Caching Mar 19, 2025 am 09:36 AM

Arbeiten mit GraphQL Caching

Entmystifizierende Bildschirmleser: Zugrunde Formen und Best Practices Entmystifizierende Bildschirmleser: Zugrunde Formen und Best Practices Mar 08, 2025 am 09:45 AM

Entmystifizierende Bildschirmleser: Zugrunde Formen und Best Practices

Vergleich der 5 besten PHP -Formbauer (und 3 kostenlose Skripte) Vergleich der 5 besten PHP -Formbauer (und 3 kostenlose Skripte) Mar 04, 2025 am 10:22 AM

Vergleich der 5 besten PHP -Formbauer (und 3 kostenlose Skripte)

Show, Don ' Tell Show, Don ' Tell Mar 16, 2025 am 11:49 AM

Show, Don ' Tell

Was zum Teufel haben NPM -Befehle? Was zum Teufel haben NPM -Befehle? Mar 15, 2025 am 11:36 AM

Was zum Teufel haben NPM -Befehle?

See all articles