Absolutes Pfad-Routing
Es gibt 2 Methoden zur Navigation: .navigate()
und.navigateByUrl()
Sie können die Methode .navigateByUrl()
für das absolute Pfadrouting verwenden:
import {Router} from '@angular/router';
constructor(private router: Router) {}
navigateToLogin() {
this.router.navigateByUrl('/login');
}
Sie geben den absoluten Pfad zur URL der Komponente an, zu der Sie navigieren möchten.
Hinweis: Geben Sie beim Aufrufen der Routermethode immer den vollständigen absoluten Pfad an navigateByUrl
. Absolute Pfade müssen mit einem führenden beginnen/
// Absolute route - Goes up to root level
this.router.navigate(['/root/child/child']);
// Absolute route - Goes up to root level with route params
this.router.navigate(['/root/child', crisis.id]);
Relative Pfadweiterleitung
Wenn Sie das relative Pfadrouting verwenden möchten, verwenden Sie die .navigate()
Methode.
HINWEIS: Es ist etwas unintuitiv, wie das Routing funktioniert, insbesondere die Routen für Eltern, Geschwister und Kinder:
// Parent route - Goes up one level
// (notice the how it seems like you're going up 2 levels)
this.router.navigate(['../../parent'], { relativeTo: this.route });
// Sibling route - Stays at the current level and moves laterally,
// (looks like up to parent then down to sibling)
this.router.navigate(['../sibling'], { relativeTo: this.route });
// Child route - Moves down one level
this.router.navigate(['./child'], { relativeTo: this.route });
// Moves laterally, and also add route parameters
// if you are at the root and crisis.id = 15, will result in '/sibling/15'
this.router.navigate(['../sibling', crisis.id], { relativeTo: this.route });
// Moves laterally, and also add multiple route parameters
// will result in '/sibling;id=15;foo=foo'.
// Note: this does not produce query string URL notation with ? and & ... instead it
// produces a matrix URL notation, an alternative way to pass parameters in a URL.
this.router.navigate(['../sibling', { id: crisis.id, foo: 'foo' }], { relativeTo: this.route });
Oder wenn Sie nur innerhalb des aktuellen Routenpfads navigieren müssen, aber zu einem anderen Routenparameter:
// If crisis.id has a value of '15'
// This will take you from `/hero` to `/hero/15`
this.router.navigate([crisis.id], { relativeTo: this.route });
Link Parameter Array
Ein Link-Parameter-Array enthält die folgenden Bestandteile für die Routernavigation:
- Der Pfad der Route zur Zielkomponente.
['/hero']
- Erforderliche und optionale Routenparameter, die in die Routen-URL eingehen.
['/hero', hero.id]
oder['/hero', { id: hero.id, foo: baa }]
Verzeichnisähnliche Syntax
Der Router unterstützt die verzeichnisähnliche Syntax in einer Linkparameterliste, um die Suche nach Routennamen zu erleichtern:
./
oder kein führender Schrägstrich ist relativ zum aktuellen Pegel.
../
im Routenpfad eine Ebene höher gehen.
Sie können die relative Navigationssyntax mit einem Vorfahrenpfad kombinieren. Wenn Sie zu einer Geschwisterroute navigieren müssen, können Sie die ../<sibling>
Konvention verwenden, um eine Ebene höher und dann über den Pfad der Geschwisterroute zu gehen.
Wichtige Hinweise zur relativen Nagivierung
Um mit der Router.navigate
Methode durch einen relativen Pfad zu navigieren , müssen Sie ActivatedRoute
das angeben, um dem Router mitzuteilen, wo Sie sich im aktuellen Routenbaum befinden.
Fügen Sie nach dem Linkparameter-Array ein Objekt mit einer relativeTo
Eigenschaft hinzu, die auf das festgelegt istActivatedRoute
. Der Router berechnet dann die Ziel-URL basierend auf dem Standort der aktiven Route.
Aus der offiziellen Angular Router-Dokumentation