路由

简介: 路由是什么Angular的路由器能让用户从一个视图导航到另一个视图实现什么样的功能在地址栏输入URL,浏览器就会导航到相应的页面。在页面中点击链接,浏览器就会导航到一个新页面。

路由是什么

Angular的路由器能让用户从一个视图导航到另一个视图

实现什么样的功能

  • 在地址栏输入URL,浏览器就会导航到相应的页面。
  • 在页面中点击链接,浏览器就会导航到一个新页面。
  • 点击浏览器的前进和后退按钮,浏览器就会在你的浏览历史中向前或向后导航。

路由组成

<base href> 元素

大多数带路由的应用都要在index.html的<head>标签下先添加一个<base>元素,来告诉路由器该如何合成导航用的URL。
<base href="/">

导入路由模块

`import { RouterModule, Routes } from '@angular/router';
Angular的路由器是一个可选的服务,它用来呈现指定的URL所对应的视图。 它并不是Angular核心库的一部分,而是在它自己的@angular/router包中。 像其它Angular包一样,我们可以从它导入所需的一切。

配置路由

下面的例子创建了四个路由定义,并用RouterModule.forRoot
方法来配置路由器, 并把它的返回值添加到AppModule
的imports
数组中。

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 }
];

@NgModule({
  imports: [
    RouterModule.forRoot(
      appRoutes,
      { enableTracing: true } // <-- debugging purposes only
    )
    // other imports here
  ],
  ...
})
export class AppModule { }

这里的路由数组appRoutes
描述如何进行导航。 把它传给RouterModule.forRoot
方法并传给本模块的imports
数组就可以配置路由器。
每个Route
都会把一个URL的path
映射到一个组件。 注意,path
不能以斜杠(/
开头。 路由器会为解析和构建最终的URL,这样当我们在应用的多个视图之间导航时,可以任意使用相对路径和绝对路径。
第二个路由中的:id
是一个路由参数的令牌(Token)。比如/hero/42
这个URL中,“42”就是id
参数的值。 此URL对应的HeroDetailComponent
组件将据此查找和展现id
为42的英雄。 在本章中稍后的部分,我们将会学习关于路由参数的更多知识。
第三个路由中的data
属性用来存放于每个具体路由有关的任意信息。该数据可以被任何一个激活路由访问,并能用来保存诸如 页标题、面包屑以及其它静态只读数据。本章稍后的部分,我们将使用resolve守卫来获取动态数据。
第四个路由中的空路径(''
)表示应用的默认路径,当URL为空时就会访问那里,因此它通常会作为起点。 这个默认路由会重定向到URL /heroes
,并显示HeroesListComponent

最后一个路由中的**
路径是一个通配符。当所请求的URL不匹配前面定义的路由表中的任何路径时,路由器就会选择此路由。 这个特性可用于显示“404 - Not Found”页,或自动重定向到其它路由。
这些路由的定义顺序是刻意如此设计的。路由器使用先匹配者优先的策略来匹配路由,所以,具体路由应该放在通用路由的前面。在上面的配置中,带静态路径的路由被放在了前面,后面是空路径路由,因此它会作为默认路由。而通配符路由被放在最后面,这是因为它能匹配上每一个URL,因此应该只有在前面找不到其它能匹配的路由时才匹配它。
如果我们想要看到在导航的生命周期中发生过哪些事件,可以使用路由器默认配置中的enableTracing选项。它会把每个导航生命周期中的事件输出到浏览器的控制台。 这应该只用于调试。我们只需要把enableTracing: true
选项作为第二个参数传给RouterModule.forRoot()
方法就可以了。

link路由出口

有了这份配置,当本应用在浏览器中的URL变为/heroes
时,路由器就会匹配到path
为heroes
Route
,并在宿主视图中的*RouterOutlet
*之后显示HeroListComponent
组件。

<router-outlet></router-outlet>
<!-- Routed views go here -->
相关文章
|
3月前
|
网络协议 网络虚拟化 网络架构
单臂路由实现VLAN间路由
本文介绍了单臂路由实现VLAN间路由的配置方法,包括网络设备的IP配置、交换机的VLAN划分、路由器的子接口配置以及ARP广播的设置,并通过ping测试验证了配置的正确性。
单臂路由实现VLAN间路由
|
5月前
|
网络协议 安全 网络架构
|
4月前
|
负载均衡 Java 数据安全/隐私保护
网关路由-路由属性
网关路由-路由属性
60 1
|
6月前
|
JavaScript 数据安全/隐私保护
|
5月前
|
存储 网络协议 算法
OSPF路由 与 ISIS路由 与路由学习对比
OSPF路由 与 ISIS路由 与路由学习对比
53 0
|
6月前
|
网络架构
路由器路由配置解析
路由器路由配置解析
|
7月前
|
JavaScript 网络架构
路由的使用
路由的使用
25 0
|
算法 网络协议 网络架构
什么情况下适合使用静态路由?什么情况下适合使用动态路由?
什么情况下适合使用静态路由?什么情况下适合使用动态路由?
205 0
|
网络协议 网络架构
路由与交换系列之简单的路由策略与默认路由汇总路由的运用
路由策略使用不同的匹配条件和匹配模式选择路由和改变路由属性。在特定的场景 中,路由策略的6种过滤器也能单独使用,实现路由过滤。
3688 1
路由与交换系列之简单的路由策略与默认路由汇总路由的运用
|
网络协议 网络架构
路由是什么
路由介绍: 什么是路由: 路由就是寻径
223 0