绝对路径路由
有两种方法用于导航,.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文档