Angular Route
Router
constructor(
private route: ActivatedRoute,
private router: Router
) {}
下面是一些路由器中的关键词汇及其含义:
路由器部件 | 含义 |
---|---|
Router (路由器) | 为激活的 URL 显示应用组件。管理从一个组件到另一个组件的导航 |
RouterModule | 一个独立的 NgModule,用于提供所需的服务提供商,以及用来在应用视图之间进行导航的指令。 |
Routes (路由数组) | 定义了一个路由数组,每一个都会把一个 URL 路径映射到一个组件。 |
Route (路由) | 定义路由器该如何根据 URL 模式(pattern)来导航到组件。大多数路由都由路径和组件类构成。 |
RouterOutlet (路由出口) | 该指令(<router-outlet> )用来标记出路由器该在哪里显示视图。 |
RouterLink (路由链接) | 这个指令把可点击的 HTML 元素绑定到某个路由。点击带有 routerLink 指令(绑定到字符串或链接参数数组)的元素时就会触发一次导航。 |
RouterLinkActive (活动路由链接) | 当 HTML 元素上或元素内的routerLink 变为激活或非激活状态时,该指令为这个 HTML 元素添加或移除 CSS 类。 |
ActivatedRoute (激活的路由) | 为每个路由组件提供的一个服务,它包含特定于路由的信息,比如路由参数、静态数据、解析数据、全局查询参数和全局碎片(fragment)。 |
RouterState (路由器状态) | 路由器的当前状态包含了一棵由程序中激活的路由构成的树。它包含一些用于遍历路由树的快捷方法。 |
链接参数数组 | 这个数组会被路由器解释成一个路由操作指南。你可以把一个RouterLink 绑定到该数组,或者把它作为参数传给Router.navigate 方法。 |
路由组件 | 一个带有RouterOutlet 的 Angular 组件,它根据路由器的导航来显示相应的视图。 |
- Router 路由器
- Route 路由
- routerLink 路由器链接
Route
路由
Routes
const appRoutes: Routes = [
{ path: "crisis-center", component: CrisisListComponent },
{ path: "hero/:id", component: HeroDetailComponent },
{
path: "heroes",
component: HeroListComponent,
data: { title: "Heroes List" }
},
{ path: "", redirectTo: "/heroes", pathMatch: "full" },
{ path: "**", component: PageNotFoundComponent }
];
path
path
不能以*斜杠(/
)*开头,这样在应用的多个视图之间导航时,可以任意使用相对路径和绝对路径。
:id
是一个路由参数的令牌(Token)。比如 /hero/42 这个 URL 中,“42”就是 id 参数的值。 它为路由参数在路径中创建一个“空位”。在这里,路由器把英雄的 id
插入到那个“空位”中。
空路径(''
)表示应用的默认路径,当 URL 为空时就会访问那里,因此它通常会作为起点。
重定向路由需要一个 pathMatch
属性,来告诉路由器如何用 URL 去匹配路由的路径,否则路由器就会报错。
从技术角度说,pathMatch = 'full'
导致 URL 中剩下的、未匹配的部分必须等于 ''
。 在这个例子中,跳转路由在一个顶级路由中,因此剩下的URL 和完整的URL 是一样的。
pathMatch
的另一个可能的值是 'prefix'
,它会告诉路由器:当剩下的URL 以这个跳转路由中的 prefix
值开头时,就会匹配上这个跳转路由。
默认路由应该只有在整个URL 等于
''
时才重定向到HeroListComponent
,别忘了把重定向路由设置为pathMatch = 'full'
。
通配符