快速入门
创建跟路由模块
// app-routing.module.tsimport { NgModule } from '@angular/core';import { RouterModule, Routes } from '@angular//router';const routes: Routes = [];@NgModule({declarations: [],imports: [RouterModule.forRoot(routes)],exports: [RouterModule],})export class AppRoutingModule {}
创建组件测试ng generate component components/demo1ng generate component components/demo2ng generate component components/demo3ng generate component components/PageNotFound
定义路由规则
const routes: Routes = [{ path: 'demo1', component: Demo1Component },// 跳转到组件{ path: 'demo2', component: Demo2Component },{ path: 'demo3', component: Demo3Component },{ path: '', redirectTo: 'demo', pathMatch: 'full' }, // 首页重定向到demo组件{ path: '**', component: PageNotFindComponent }, // 通配符路由];
模板
<h1>app</h1><ul><li><a [routerLink]="['/demo1']" routerLinkActive="active">demo1</a></li><li><a [routerLink]="['/demo2']" routerLinkActive="active">demo2</a></li><li><a [routerLink]="['/demo3']" routerLinkActive="active">demo3</a></li></ul><br><router-outlet></router-outlet>
后退功能
在需要后退的模板添加一个按钮,并绑定事件
<button (click)="goBack()">go back</button>
在组件类中添加依赖,注入依赖,设置事件
import { Location } from '@angular/common';constructor(private location: Location) {}goBack(): void {this.location.back();}
路由之间传值
路由传值
0.先在组件中初始化一个参数
// app/demo1/demo1.component.ts// 模拟学生数据students: { id: number; name: string }[] = [];ngOnInit(): void {// 生成10个学生数据for (let i = 10; i < 20; i++) {this.students.push({ id: i, name: `学生${i}` });}}
1.配置路由
const routes: Routes = [{ path: 'demo2/:no', component: Demo2Component },];
2.配置模板
<p>demo1 works!</p><ul><li *ngFor="let item of students;let i = index"><a [routerLink]="[ '/demo2', item.id ]">{{i}} : {{item.name}}</a></li></ul>
3.在跳转到的组件中接收数据
// app/demo2/demo2.component.ts// 导入依赖import { ActivatedRoute } from '@angular/router';// 依赖注入constructor(public route: ActivatedRoute) {}// 获取值ngOnInit(): void {this.route.params.subscribe((param) => {console.log(param);});}
js跳转路由
动态路由
// 引入模块import { Router } from '@angular/router';constructor(public router: Router) {}// 跳转navigateByUrlthis.router.navigate(['/demo']); // 普通路由this.router.navigate(['demo','1234']); // 动态路由
