Ladebildschirm beim Navigieren zwischen Routen in Angular 2 anzeigen
Wie zeige ich einen Ladebildschirm, wenn ich eine route im Winkel 2?
InformationsquelleAutor der Frage think123 | 2016-05-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den aktuellen Winkel-Router stellt Navigation-Events. Sie können Sie abonnieren und machen änderungen an der Benutzeroberfläche entsprechend. Denken Sie daran, zu zählen, in anderen Veranstaltungen, wie
NavigationCancel
undNavigationError
zu stoppen, Ihr spinner im Fall router-übergänge scheitern.app.Komponente.ts - Ihre Stamm-Komponente
app.component.html - Ihre Stamm-anzeigen
Leistung Verbesserte Antwort: Wenn Sie sich sorgen über die Leistung gibt es eine bessere Methode, es ist etwas mühsam, Sie zu implementieren, sondern die Verbesserung der Leistung Wert sein wird, die zusätzliche Arbeit. Anstelle der Verwendung von
*ngIf
bedingt zeigen die spinner, die wir nutzen könnten Eckig istNgZone
undRenderer
an - /ausschalten der spinner, die bypass-Winkel-change-Erkennung, wenn wir ändern die spinner Zustand. Ich fand dieses, um die animation glatter im Vergleich zu*ngIf
oder eineasync
Rohr.Dies ist ähnlich wie meine Vorherige Antwort mit einigen tweaks:
app.Komponente.ts - Ihre Stamm-Komponente
app.component.html - Ihre Stamm-anzeigen
InformationsquelleAutor der Antwort borislemke
UPDATE:3 Nun, ich habe ein Upgrade auf neuen Router, @borislemke's Ansatz wird nicht funktionieren, wenn Sie
CanDeactivate
guard. Ich bin erniedrigend zu meiner alten Methode,ie:
diese AntwortUPDATE2: Router-events in new-router vielversprechend und die Antwort von @borislemke scheint zu decken, ist der wichtigste Aspekt der spinner Umsetzung, habe ich nicht nicht getestet, aber ich kann es nur empfehlen.
UPDATE1: ich schrieb diese Antwort in der ära der
Old-Router
wenn es verwendet werden, um nur ein Ereignisroute-changed
informiert überrouter.subscribe()
. Außerdem fühlte ich mich überladen von unten nähern und versuchte es mit nurrouter.subscribe()
und es ging nach hinten Los,weil es keine Möglichkeit gab, zu erkennencanceled navigation
. Also musste ich wieder zu langen Ansatz(doppelte Arbeit).Wenn Sie wissen, Ihren Weg in Angular2, das ist, was Sie brauchen
Boot.ts
Root-Komponente- (MyApp)
Spinner-Komponente (abonnieren Spinner-Dienst ändern Sie den Wert der aktiven entsprechend)
Spinner-Service (bootstrap diesen service)
Definieren eine beobachtbare abonniert haben, durch die spinner-Komponente, um den status zu ändern auf ändern, und Funktion zu kennen und setzen die spinner aktiv/inaktiv.
Alle Anderen Wege Komponenten
(Beispiel):
InformationsquelleAutor der Antwort Ankit Singh
Warum nicht einfach mit einfachen css :
Und in Ihrem Stile :
Oder auch wir können dies tun, für die erste Antwort:
Und dann einfach nur
Der trick hier ist, die neuen Routen und Komponenten wird immer angezeigt, nachdem router-Steckdose , also mit einem einfachen css-Selektor können wir ein-und ausblenden der laden.
InformationsquelleAutor der Antwort Milad
Könnten Sie auch diese vorhandene Lösung. Die demo hier. Es sieht aus wie youtube Ladebalken. Ich fand es einfach und fügte hinzu, es zu meinem eigenen Projekt.
InformationsquelleAutor der Antwort walkerbox
Wenn Sie spezielle Logik, die erforderlich für die ersten route können Sie Folgendes tun:
AppComponent
Hatte ich eine Notwendigkeit für diese zu verstecken meine Fußzeile, sonst erscheinen am oberen Rand der Seite. Auch wenn Sie nur ein loader für die erste Seite, die Sie verwenden können.
InformationsquelleAutor der Antwort Simon_Weaver