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.navigateMethode durch einen relativen Pfad zu navigieren , müssen Sie ActivatedRoutedas angeben, um dem Router mitzuteilen, wo Sie sich im aktuellen Routenbaum befinden.
Fügen Sie nach dem Linkparameter-Array ein Objekt mit einer relativeToEigenschaft 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