Gibt es überhaupt eine Möglichkeit, Daten als Parameter mit router.navigate zu senden? Ich meine, so etwas wie dieses Beispiel, wie Sie sehen können, hat die Route einen Datenparameter, aber dies funktioniert nicht:
this.router.navigate(["heroes"], {some-data: "othrData"})
weil einige Daten kein gültiger Parameter sind. Wie kann ich das machen? Ich möchte den Parameter nicht mit queryParams senden.
angular
routing
angular-router
Motomine
quelle
quelle
Antworten:
Es gibt viel Verwirrung zu diesem Thema, weil es so viele verschiedene Möglichkeiten gibt, dies zu tun.
In den folgenden Screenshots werden die entsprechenden Typen verwendet:
1) Erforderliche Routing-Parameter:
2) Optionale Routenparameter:
3) Routenabfrageparameter:
4) Sie können einen Dienst verwenden, um Daten von einer Komponente an eine andere zu übergeben, ohne Routenparameter zu verwenden.
Ein Beispiel finden Sie unter: https://blogs.msmvps.com/deborahk/build-a-simple-angular-service-to-share-data/
Ich habe hier einen Plunker davon: https://plnkr.co/edit/KT4JLmpcwGBM2xdZQeI9?p=preview
quelle
route
Typ istActivatedRoute
nichtRouter
.Es gibt eine neue Methode, die mit Angular 7.2.0 geliefert wurde
https://angular.io/api/router/NavigationExtras#state
Senden:
Erhalten:
Hier können Sie einige zusätzliche Informationen finden:
https://github.com/angular/angular/pull/27198
Der obige Link enthält dieses Beispiel, was nützlich sein kann: https://stackblitz.com/edit/angular-bupuzn
quelle
ngOnInit()
asthis.router.getCurrentNavigation().extras
Die neueste Version von Angular (7.2 +) bietet jetzt die Möglichkeit, zusätzliche Informationen mithilfe von NavigationExtras zu übergeben .
Hauptkomponente
newComponent
Ausgabe
Hoffe das würde helfen!
quelle
@ dev-nish Dein Code funktioniert mit kleinen Änderungen. mach das
in
Wenn Sie dann speziell einen Datentyp senden möchten, z. B. JSON als Ergebnis eines Formularausfüllens, können Sie die Daten auf die gleiche Weise wie zuvor beschrieben senden.
quelle
In navigExtra können wir nur einen bestimmten Namen als Argument übergeben, andernfalls wird ein Fehler wie unten angezeigt: Zum Beispiel möchte ich hier den Kundenschlüssel in der Routernavigation übergeben und ich übergebe wie folgt:
aber es zeigt einen Fehler wie unten:
.
Lösung: Wir müssen so schreiben:
quelle
Das Beste, was ich im Internet dafür gefunden habe, ist ngx-Navigation mit Daten . Es ist sehr einfach und gut für die Navigation der Daten von einer Komponente zu einer anderen Komponente. Sie müssen nur die Komponentenklasse importieren und auf sehr einfache Weise verwenden. Angenommen, Sie haben eine Home- und About-Komponente und möchten dann Daten senden
HAUSKOMPONENTE
ÜBER KOMPONENTE
Bei Fragen folgen Sie https://www.npmjs.com/package/ngx-navigation-with-data
Kommentar nach unten für Hilfe.
quelle