路由所要解决的核心问题是通过建立URL和页面的对应关系,使得不同的页面可以用不同的URL来表示
路由配置
app.routes.ts
1 2 3 4 5 6 7
| import { Routes } from '@angular/router' import { PipeComponent } from './pipe/pipe.component' export const rootRouterConfig: Routes = [ { path: 'pipe', component: PipeComponent }, ]
|
创建跟路由模块
app.module.ts
1 2 3 4 5 6 7 8 9 10 11
| import { ModuleWithProviders } from '@angular/core' import { RouterModule } from '@angular/router' import { rootRouterConfig } from './app.routes' let rootRouterModule: ModuleWithProviders = RouterModule.forRoot(rootRouterConfig) @NgModule({ import: [ rootRouterModule ] }) export class AppModule { }
|
- 在index.html中设置
- <base> 标签为页面上的所有的相对链接规定默认 URL 或默认目标。
在一个文档中,最多能使用一个 <base> 元素。<base> 标签必须位于 <head> 元素内部。
添加
app.component.html
路由跳转
使用指令跳转
app.component.html
1
| <button class="btn" [routerLink]="['/form']" routerLinkActive='active'>Form</button>
|
app.component.css
1 2 3
| .active { background: #3DD689; }
|
- 使用[routerLink]=”[‘/form’]”指令进行路由跳转
- 当routerLink被激活时,通过routerLinkActive指令为响应的HTML元素指定CSS类。
- routerLinkActive作用于祖先元素,当该祖先元素下的任意routerLink处于激活状态该祖先元素都将获得routerLinkActive指定的CSS类
使用代码跳转
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import { Component } from '@angular/core'; import { Router } from '@angular/router'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { constructor(private _router: Router) { setTimeout(() => { _router.navigateByUrl('/form', { skipLocationChange: true }) }, 1000) } }
|
- skipLocationChange 在不改变URL的情况下实现路由跳转
路由参数
1 2
| <a [routerLink]="['/detail/2']" [queryParams]="{limit:5}">路由参数</a> <a [routerLink]="['/detail', 2]" [queryParams]="{limit:5}">路由参数</a>
|
- [routerLink]指定跳转路径
- [queryParams]指定query参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| import { Component, OnInit, OnDestroy } from '@angular/core' import { ActivatedRoute } from '@angular/router'; export class ContactDetialComponent implements OnInit, OnDestroy { private pathSub: any private querySub: any path: string query: string constructor(private _activedRoute: ActivatedRoute) { } ngOnInit() { this.pathSub = this._activedRoute.params.subscribe((params) => { this.path = params['id'] }) this.querySub = this._activedRoute.queryParams.subscribe((params) => { this.path = params['limit'] }) } ngOnDestroy() { this.pathSub.unsubscribe() this.querySub.unsubscribe() } }
|