Абсолютна маршрутизація шляху
Існує 2 способи навігації .navigate()
та.navigateByUrl()
Ви можете використовувати метод .navigateByUrl()
для абсолютної маршрутизації шляху:
import {Router} from '@angular/router';
constructor(private router: Router) {}
navigateToLogin() {
this.router.navigateByUrl('/login');
}
Ви ставите абсолютний шлях до URL компонента, до якого ви хочете перейти.
Примітка. Під час виклику navigateByUrl
методу маршрутизатора завжди вказуйте повний абсолютний шлях . Абсолютні шляхи повинні починатися з провідних/
// 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]);
Відносна маршрутизація
Якщо ви хочете використовувати відносну маршрутизацію шляху, використовуйте .navigate()
метод.
ПРИМІТКА. Дещо маршрутизація маршрутів, зокрема батьківських, рідних та дочірніх маршрутів, трохи неінтуїтивно:
// 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 });
Або якщо вам просто потрібно орієнтуватися в поточному шляху маршруту, але до іншого параметра маршруту:
// 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 });
Масив параметрів зв'язку
Масив параметрів посилання містить наступні інгредієнти для навігації по маршрутизатору:
- Шлях маршруту до компонента призначення.
['/hero']
- Обов’язкові та необов'язкові параметри маршруту, які входять у URL-адресу маршруту.
['/hero', hero.id]
або['/hero', { id: hero.id, foo: baa }]
Синтаксис, що нагадує каталог
Маршрутизатор підтримує синтаксис схожий на каталог у списку параметрів посилання, щоб допомогти орієнтуватися у пошуку імені маршруту:
./
або відсутня провідна коса риса відносно поточного рівня.
../
піднятися на один рівень на шляху маршруту.
Ви можете комбінувати відносний синтаксис навігації зі шляху предка. Якщо вам потрібно перейти до маршрутного брата, ви можете скористатись ../<sibling>
умовою, щоб піднятися на один рівень, потім переходити через шлях вперед та вниз по маршруту.
Важливі зауваження щодо відносного проростання
Для навігації по відносному шляху з Router.navigate
методом, ви повинні надати, ActivatedRoute
щоб дати маршрутизатору знання про те, де ви знаходитесь у поточному дереві маршруту.
Після масиву параметрів посилання додайте об’єкт із relativeTo
властивістю, встановленою до ActivatedRoute
. Потім маршрутизатор обчислює цільову URL-адресу на основі місцезнаходження активного маршруту.
З офіційної документації кутового маршрутизатора