Rumah > hujung hadapan web > tutorial css > Bagaimana untuk Menunjukkan Skrin Memuatkan Semasa Navigasi Laluan dalam Sudut 2?

Bagaimana untuk Menunjukkan Skrin Memuatkan Semasa Navigasi Laluan dalam Sudut 2?

Mary-Kate Olsen
Lepaskan: 2024-12-05 07:06:12
asal
737 orang telah melayarinya

How to Show a Loading Screen During Route Navigation in Angular 2?

Tunjukkan Skrin Pemuatan Semasa Menavigasi Antara Laluan dalam Sudut 2

Keperluan biasa dalam aplikasi Sudut ialah memaparkan skrin pemuatan atau penunjuk semasa menavigasi antara laluan. Dengan memanfaatkan Acara Navigasi yang disediakan oleh Penghala Angular, kami boleh menogol keterlihatan skrin pemuatan mengikut keadaan navigasi.

Menggunakan Langganan untuk Acara Navigasi:

Dalam akar AppComponent, melanggan acara penghala. Apabila peristiwa NavigationStart berlaku, paparkan skrin pemuatan. Apabila acara NavigationEnd dipancarkan, sembunyikan skrin pemuatan. Selain itu, kendalikan peristiwa NavigationCancel dan NavigationError untuk memastikan skrin pemuatan disembunyikan sekiranya peralihan laluan gagal.

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

@Component({ /* ... */ })
export class AppComponent {

    loading = true;

    constructor(private router: Router) {
        this.router.events.subscribe((event: Event) => {
            this.navigationInterceptor(event);
        });
    }

    navigationInterceptor(event: Event): void {
        if (event instanceof NavigationStart) {
            this.loading = true;
        }
        else if (event instanceof NavigationEnd) {
            this.loading = false;
        }
    }

}
Salin selepas log masuk

Dalam templat komponen akar, paparkan skrin pemuatan menggunakan arahan *ngIf.

<div *ngIf="loading" class="loading-overlay">
    <!-- Add your loading indicator here -->
</div>
Salin selepas log masuk

Pengoptimuman Prestasi:

Untuk lebih baik prestasi, keupayaan NgZone dan Renderer Angular boleh dimanfaatkan dan bukannya arahan *ngIf. Ini mengelakkan mekanisme pengesanan perubahan Angular apabila mengemas kini keterlihatan pemutar.

@ViewChild('spinnerElement') spinnerElement: ElementRef;

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

private _navigationInterceptor(event: Event): void {
    if (event instanceof NavigationStart) {
        this.ngZone.runOutsideAngular(() => {
            this.renderer.setElementStyle(this.spinnerElement.nativeElement, 'opacity', '1');
        });
    }
    else if (event instanceof NavigationEnd) {
        this._hideSpinner();
    }
}

private _hideSpinner(): void {
    this.ngZone.runOutsideAngular(() => {
        this.renderer.setElementStyle(this.spinnerElement.nativeElement, 'opacity', '0');
    });
}
Salin selepas log masuk

Dalam templat komponen akar, alih keluar arahan *ngIf dan rujuk terus elemen pemutar.

<div #spinnerElement>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menunjukkan Skrin Memuatkan Semasa Navigasi Laluan dalam Sudut 2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan