0

Ich benutze Nativescript + Typescript/Angular2.Nativescript: Show ActivityIndicator während des Seitenübergangs

Ich habe eine Seite, die ziemlich schwer zu laden ist (es enthält eine tabview und eine Karte), also würde ich einen ActivityIndicator zeigen, wenn der Routerlink der Verweisseite angetippt wird und es ausblenden, wenn die Seite geladen wird. Ich denke, ich könnte das load Ereignis der Page Klasse (wie erwähnt here) nutzen, um es zu erreichen, aber in der Dokumentation ist es nicht klar, wie es in Angular Nativescript zu tun ist. Kann jemand ein Beispiel geben?

Antwort

0

Gehen Sie auf die Seite, für die Sie ActivityIndicator und fügen Sie an der Spitze zeigen wollen:

<ActivityIndicator [busy]="isLoading" [visibility]="isLoading ? 'visible' : 'collapse'" row="1" horizontalAlignment="center" verticalAlignment="center"></ActivityIndicator> 

müssen Sie erstellen Sie eine neue Eigenschaft namens isLoading in der Komponente für diese Seite und initialisieren es falsch:

isLoading = false; 

Nun, da Sie diese Eigenschaft wäre der letzte Schritt sein, diese Eigenschaft auf true gesetzt, wenn die Daten die loader.This zu zeigen, wird geladen, wie pro Ihre Implementierung variieren. Aus Gründen der Erklärung können wir jedoch davon ausgehen, dass Sie einen Service geschrieben haben, der das Abrufen von Daten übernimmt und wir diesen in unserer Komponente abonnieren. Für die ich den Einsatz von ngOnInit() Funktion machen diesen Dienst abonnieren und die activityIndicator zeigen als

ngOnInit() { 
    this.isLoading = true; //setting isLoading to true in order to show the loader 
    this.SomeService.load() 
    .subscribe(res => { 
     //do stuff with the data 
     //like iterate ,bind etc 
     this.isLoading = false; // setting the isLoading property back to false after doing req. stuff. 
    }); 
} 

folgt und das ist es. Ich hoffe, dies wird dir helfen.

+0

Das Problem ist genau die Implementierung und was die IsLoading-Eigenschaft zu binden. Leider muss ich den Spinner nicht auf irgendeine Art von Daten laden Beginn/Ende oder externe Dienst Async-Aktivität, sondern auf die Seite laden und Rendern selbst. Ich denke, der ngOnInit() - Lebenszyklus ist in diesem Fall nutzlos, weil er von der Angular-Komponente ausgelöst wird, nachdem die Initialisierung bereits erfolgt ist. –

+0

Lassen Sie mich versuchen, es besser zu erklären: Ich muss das Laden zeigen, nachdem ein Seitenübergang von Seite A nach Seite B ausgelöst wurde (wenn der Benutzer auf eine Listenangabe auf der Seite tippt) und bis der Seitenübergang abgeschlossen ist. Gerade die Zeit für die Plattform, um den Routing-Eintrag aufzulösen und die neue Seite in den Rahmen zu legen. So wird der Spinner wahrscheinlich angezeigt, während der Benutzer noch die Seite A ansieht –

Verwandte Themen