Абсолютная маршрутизация
Есть 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 на основе местоположения активного маршрута.
Из официальной документации Angular Router