Ответ 1
Маршрутизация абсолютного пути
Существует два метода навигации: .navigate()
и .navigateByUrl()
Вы можете использовать метод .navigateByUrl()
для абсолютной маршрутизации маршрута:
import {Router} from '@angular/router';
this.router= Router;
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 Документация маршрутизатора