美文网首页
Angular 路由入门

Angular 路由入门

作者: 品品下午茶 | 来源:发表于2022-05-25 15:24 被阅读0次

我们可以通过下面几步操作,让 Angular 应用支持路由功能:

  1. 在 Angular 应用中设置基础路径。
  2. 使用 @angular/router 包中的模块。
  3. 配置 Angular 应用的路由。
  4. 匹配导航地址和渲染的组件。

基础路径

在现代浏览器中,都已经支持 HTML5. 我们能够在不向服务器发送请求的情况下,通过改变浏览器的 URL 或历时记录,切换不同的视图页面。这种技术称为 HTML 5 pushState.

在 Angular 应用中,为了启用 pushState 路由功能,我们必须在 index.html 文件中配置 base 标签。

index.html

<!doctype html>

<html lang="en">

<head>

  <meta charset="utf-8">

  <title>MyApp</title>

  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1">

  <link rel="icon" type="image/x-icon" href="favicon.ico">

</head>

<body>

  <app-root></app-root>

</body>

</html>

在使用 Angular CLI 命令创建应用时,会默认创建 base 标签,设置 href 的值为根 /.

导入路由

在 Angular 10 应用中,路由功能可以根据给定 URL 展示一个特定的组件模板视图。Angular 框架提供了 @angular/router npm 包,但是因为路由不属于 Angular 核心功能,我们需要手工导入:

import { RouterModule, Routes } from '@angular/router';

配置路由

在基于路由的 Angular 应用中,路由器服务是一个单实例对象。路由器服务默认不包含任何路由,我们必须进行配置。下面我们定义了三个路由,并通过 RouterModule.forRoot() 方法进行配置。

const routes: Routes = [

  { path: 'books/:id', component: BookDetailComponent },
  {
    path: 'books',
    component: BookListComponent,
    data: { title: 'Heroes List' }
  },
  { path: '**', component: PageNotFoundComponent }
];

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

路由数组 routes 描述了如何进行组件视图的导航。

每个路由都映射一个路径到组件。该路径由 path 属性指定,其值不包含前导 /.

第二个路由中的 :id 表示路由参数,转换为 URL 表示为路径参数,如 /books/7,其中"7"就是 id 参数的值。

路由的 data 参数可以存储与路由相关的任何数据,如页面标题,导航文本和其他只读的静态数据。

在应用中导航时,我们既可以改变浏览器的 URL,也可以在代码中通过路由器服务激活一个路由完成组件的切换。

渲染组件

RouterModule.forRoot(routes) 方法返回的模块中,包含了一个重要的指令 router-outlet. router-outlet 指令的使用更像是一个组件,但是他本身不显示任何内容,而是作为一个占位符,标记了路由器显示组件的位置。

在 Angular 10 的应用中,AppComponent 组件通常用来构建应用主体布局,并编排所有其他组件。典型示例如下:

<app-header></app-header>

<router-outlet></router-outlet>
<!-- 可路由的组件放置在这里 -->

<app-footer></app-footer>

在上面的布局中,app-headerapp-footer 是布局组件;而在 router-outlet 指令 所在的位置,渲染其他可路由的组件,并且这些组件与 router-outlet 指令位于同一层级。

参考资料

相关文章

  • Angular 路由入门

    我们可以通过下面几步操作,让 Angular 应用支持路由功能: 在 Angular 应用中设置基础路径。 使用 ...

  • 模拟面试问题总结

    AngularJS路由实现原理 Angular路由 允许我们通过不同的URL访问不同的内容,并且Angular路由...

  • 模拟面试问题总结

    AngularJS路由实现原理 Angular路由 允许我们通过不同的URL访问不同的内容,并且Angular路由...

  • Angular Route导航

    Angular Route导航 路由基础知识 路由相关对象介绍 新建路由项目 使用angular-cli新建项目。...

  • angular路由跳转

    angular路由 使用路由 routerLink="/"路由出口

  • Angular 4 路由快速入门

    路由是 Angular 应用程序的核心,它加载与所请求路由相关联的组件,以及获取特定路由的相关数据。这允许我们通过...

  • 前端路由原理和React Router

    前端路由原理 前端三大框架 Angular、React、Vue ,它们的路由解决方案 angular/router...

  • angular入门简介

    angular入门简介angular简书

  • Angular的路由延迟加载

    Angular的路由延迟加载 angular的路由延迟加载大致分为两类CanActivate和CanLoad。这两...

  • angular中ngRoute和uiRoute的区别

    最近一直在学习angular路由这一部分,angular的路由有两种,在angular最先出来的ngRoute的时...

网友评论

      本文标题:Angular 路由入门

      本文链接:https://www.haomeiwen.com/subject/ygweprtx.html