理解 Angular 中路由的目的

发布日期:2026-07-10 00:14:04   来源 : 杭州电子商务研究院    浏览量 :7
杭州电子商务研究院 发布日期:2026-07-10 00:14:04  
7

介绍

当用户在 Web 应用中执行任务时,Angular 中的路由可帮助我们从一个视图导航到另一个视图。在本指南中,您将了解 Angular 路由器的主要功能。

Angular 路由概述

用户在应用中导航时采取的一些操作示例包括:

  • 在地址栏中输入 URL,浏览器就会导航到相应的页面
  • 单击页面上的链接,浏览器将导航到新页面
  • 点击浏览器的后退和前进按钮,浏览器就会在页面历史记录中向前和向后导航

Angular 路由器可以将浏览器 URL 解释为导航到客户端生成的视图的指令。它可以将可选参数传递给支持视图组件,帮助它决定要呈现哪些特定内容。您可以将路由器绑定到页面上的链接,当用户单击链接时,它将导航到相应的应用程序视图。

路由器概念

Angular 路由器位于其自己的库包 @angular/router 中。从中导入您需要的内容,就像从任何其他 Angular 包中导入一样。它是一项可选服务,可为给定的 URL 提供特定的组件视图。

文件名:app.module.ts

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

配置路由器

让我们看看如何配置 Angular 路由器。以下示例创建五个路由定义,通过RouterModule.forRoot() 方法配置路由器,并将结果添加到AppModule 的 imports 数组中。

文件名:app.module.ts

      const appRoutes: Routes = [
  { path: 'company', component: CompanyComponent },
  { path: 'employee/:id',      component: EmployeeDetailComponent },
  {
    path: 'employees',
    component: EmployeeListComponent,
    data: { title: 'Employees List' }
  },
  { path: '',
    redirectTo: '/employees',
    pathMatch: 'full'
  },
  { path: '**', component: PageNotFoundComponent }
];

@NgModule({
  imports: [
    RouterModule.forRoot(
      appRoutes,
      { enableTracing: true }
    )
  ],
  ...
})
export class AppModule { }
    

配置路线后,下一步是决定如何导航。导航将基于用户操作(例如单击超链接等)进行。

使用RouterLink指令到锚标签进行导航,如下所示。

文件名:app.module.ts

      import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  styleUrls: ['./app.component.css'],
  templateUrl: './app.component.html'
})
export class AppComponent {
  title ='Employee application' ;
}
    

文件名:app.component.html

      <h1>{{title}}</h1>
<nav>
    <a [routerLink]='["/employeedashboard"]' routerLinkActive="active">Employee Dashboard</a>
    <a [routerLink]='["/employees"]' routerLinkActive="active">Employees</a>
</nav>
<router-outlet></router-outlet>
    

在上面的例子中,我们创建了超链接和routerLink指令并指定了要导航的路径。如果用户点击员工仪表板,它将导航到/employeedashboardrouterLinkActive在单击链接时将给定的 CSS 类应用于链接,使其看起来像活动链接(active是在app.component.css中定义的 CSS 类,在本例中将链接颜色更改为蓝色)。

router-outlet是显示与给定路径关联的组件的输出的位置。例如,如果用户单击Employees,它将导航到/employees,这将执行配置详细信息中提到的EmployeesComponent类,并且输出将显示在router-outlet类中。要以编程方式导航,我们可以使用路由器类的navigation()方法。将路由器类注入组件并调用 navigation 方法,如下所示。

      this.router.navigate([url, parameters])
    

路线参数

与 URL 一起传递的参数称为路由参数。使用以下 CLI 命令生成员工仪表板组件。

      import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { Employee } from '../emploee/employee';
import { EmployeeService } from '../employee/employee.service';
@Component({
  selector: 'app-employeedashboard',
  templateUrl: './employeedashboard.component.html',
  styleUrls: ['./employeedashboard.component.css']
})
export class EmployeeDashboardComponent implements OnInit {
  employees: Employee[] = [];
  constructor(
    private router: Router,
    private employeeService: EmployeeService) { }
  ngOnInit() {
    this.employeeService.getEmployees()
      .subscribe(employees => this.employees = employees.slice(1, 5));
  }
  gotoDetail(employee: Employee) {
    this.router.navigate(['/employeedetail', employee.id]);
  }
}
    

@angular/router模块导入路由器类。通过构造函数将其注入到组件类中。this.router.navigate()方法用于以编程方式导航到特定 URL。Navigate()方法接受两个参数:要导航的路径和要传递的路由参数值。这里的路径将是employeedetail/<employee_id>

访问路由参数

要访问路由参数,请使用ActivatedRoute类。在下面的示例中,我们看到,当单击特定员工时,它会呈现 EmployeeDetailComponen t。当单击员工链接时,它会导航到EmployeesComponent

文件名:employee-detail.component.ts

      import { Component, OnInit, OnDestroy } from '@angular/core';
import { ActivatedRoute, ParamMap } from '@angular/router';
import { switchMap } from 'rxjs/operators';
import { Observable } from 'rxjs';
import { Employee } from '../employee/employee';
import { EmployeeService } from '../employee/employee.service';
@Component({
  selector: 'app-employee-detail',
  templateUrl: './employee-detail.component.html',
  styleUrls: ['./employee-detail.component.css']
})
export class EmployeeDetailComponent implements OnInit, OnDestroy {
  employee: Employee;
  error: any;
  sub: any;
  constructor(private employeeService: EmployeeService, private route: ActivatedRoute) { }
  ngOnInit() {

    this.sub = this.route.paramMap.pipe(switchMap((params: ParamMap) =>
      this.employeeService.getEmployee(+params.get('id')))).subscribe(employee => this.employee = employee);
  }
  ngOnDestroy() {
    this.sub.unsubscribe();
  }
  goBack() {
    window.history.back();
  }
}
    

导入ActivatedRoute类来访问路由参数。通过构造函数将ActivatedRoute类注入到组件类中。ActivatedRoute有一个paramMap可观察方法,用于保存路由参数。它有 switchMap ()方法来处理路由参数。ParamMap有一个get()方法来获取特定的参数值。

结论

在本指南中,我们探讨了如何在 Angular 中使用路由。我们还了解了如何使用routerlink和路由参数在应用程序中使用路由。

您可以在我的指南《在 Angular 中使用异步管道》中了解有关 Angular 的更多信息。

以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据