Die Anwendung hat eine Seite mit 2 bis 3 Kategorietasten. Im Grunde genommen, Knopf klicken, um die Liste der Elemente in jeder Kategorie zu ziehen, sollte die Seite angezeigt werden, sobald API abgerufen Daten verfügbar sind.
Ich habe eckige 2 App-Routen mit Auflösungs-API-Aufrufen entworfen, und ich sollte nicht die gesamte Seite mit einem Drehfeld blockieren, wenn eine Seite geladen wird, wenn wir die Anwendungsfunktionalität in eckig 4 migrieren.
Wenn ein Benutzer auf eine Kategorie klickt, wenn die Antwort verzögert ist, kann er auf die andere Kategorie klicken. Wenn er zurück navigiert, würde er erwarten, dass die Daten in zuvor angeklickter Kategorie geladen werden, aber Angular 2/4 bricht die Route aufgrund von Navigation ID does not match with the current route
Um ein besseres Verständnis zu haben, sehen Sie sich bitte den untenstehenden Link an. Ссылка
Wenn Sie gleichzeitig auf den Planeten und die Personen klicken, beachten Sie, dass nur eine der Abschnittlasten und andere Abschnitte die Daten nicht laden. Wenn Sie eine Inspektion durchführen, wird das Ereignis NavigationCancel ausgelöst.
Nicht sicher Wenn ich qualifiziert bin zu erklären, wie der Resolver für den Router auf Angular 2 funktioniert, aber ich gehe einfach nochmal durch Dokument .
Zusammenfassend möchten Sie das Rendern der gerouteten Komponente auf alle verzögern notwendige Daten wurden abgerufen.
Sie benötigen einen Resolver.
So wie ich es verstehe, wird der Resolver helfen, falls Sie die Ansicht komplett wechseln und die Daten vor dem Umschalten abrufen wollen. Die Daten sind also bereit, sobald die Route aktiviert wird. Dies ermöglicht Ihnen auch, Fehler vor dem Routing zu der Komponente zu behandeln. Denken Sie an ein Master-Detail-Layout, bei dem Sie auf ein Element klicken und es zu einer Detailansicht navigieren. Es macht keinen Sinn, zu einem Detail für eine ID zu navigieren, die keinen Datensatz enthält, und es ist besser, den Benutzer zurück an die Liste zu senden.
Ihr Fall ist kein häufiger Fall, wenn Sie auf der Route eine andere Ausgangsbasis anzeigen möchten. Und in dem Moment, in dem Sie in people / planet klicken, wird die Komponente direkt gerendert und die Daten werden abgerufen. Möglicherweise möchten Sie auch den Platzhalter "Loading ..." anzeigen. Also schlug ich vor, den ngOnInit Hook für diesen Zweck zu verwenden.
Arbeitslos: Ссылка
Tags und Links angular angular2-routing angular2-router angular2-router3