## 一、链接导航传值
#### 1.传递一个参数
>[info] 配置路由文件
```
{
path:'parent/:id', //id为路由传递的参数
component:ParentComponent
}
```
>[info] 传递参数
```
<a [routerLink]="['/parent',1]" routerLinkActive="active">跳转到parent组件,并传递一个参数</a>
```
#### 2.传递多个参数
>[danger] 传递多个参数不需要配置路由文件
```
<a [routerLink]="['/parent']" [queryParams]="{id:1,state:1}">跳转到parent组件,并传递多个参数</a>
```
## 二、JS路由跳转传值
#### 1.传递一个参数
>[info] 配置路由文件
```
{
path:'parent/:id', //id为路由传递的参数
component:ParentComponent
}
```
>[info] 传递参数
```
import { Router } from '@angular/router';
constructor(router:Router) { }
//js路由传值
navigate():void{
this.router.navigateByUrl('parent/1');
}
```
#### 2.传递多个参数
>[danger] 传递多个参数不需要配置路由文件
```
import { Router } from '@angular/router';
constructor(router:Router) { }
//js路由传值
navigate(): void{
this.router.navigate(['parent'],{
queryParams: {session_id:123,id:10 }, //传递的参数
fragment: 'anchor' /*锚点*/
});
}
```
## 三、静态数据
>[info] 路由配置中的data属性用来保存诸如页面标题、面包屑以及其它静态数据等。
```
const routes: Routes = [
{
path: 'parent', //路由路径
component: ParentComponent, //组件
data:{ //静态数据
parent:'parent',
child:'child'
}
}
];
```
## 四、接收路由传值
#### 1.接收一个参数
```
import { ActivatedRoute} from '@angular/router';
//ActivatedRoute:当前激活的路由对象,保存着当前路由的信息,如路由地址、路由参数等等。
constructor(router:ActivatedRoute) { }
//接受传递过来的一个参数
ngOnInit() {
this.router.params.subscribe(params=>{
console.log(params)
})
}
```
#### 2.接收多个参数
```
import { ActivatedRoute} from '@angular/router';
//ActivatedRoute:当前激活的路由对象,保存着当前路由的信息,如路由地址、路由参数等等。
constructor(router:ActivatedRoute) { }
//接受传递过来的多个参数
ngOnInit() {
this.router.queryParams.subscribe((params) => {
console.log(params)
})
}
```
#### 3.接收静态数据
```
import { ActivatedRoute} from '@angular/router';
//ActivatedRoute:当前激活的路由对象,保存着当前路由的信息,如路由地址、路由参数等等。
constructor(router:ActivatedRoute) { }
//接受传递过来的静态数据
ngOnInit() {
this.router.data.subscribe(data => {
console.log(data)
})
}
```
## 五、使用路由快照获取参数(snapshot)
```
import { ActivatedRoute} from '@angular/router';
//ActivatedRoute:当前激活的路由对象,保存着当前路由的信息,如路由地址、路由参数等等。
constructor(router:ActivatedRoute) { }
//使用路由快照获取参数
//路由快照提供了路由参数的初始值。可以通过它来直接访问参数,而不用订阅或者添加 Observable 的操作符
ngOnInit() {
//获取一个参数
this.route.snapshot.paramMap.get('id');
//获取多个参数
this.route.snapshot.queryParamMap.get('id');
}
```
## 六、使用可观察对象接收路由参数
```
import { Router, ActivatedRoute, ParamMap } from '@angular/router';
//ActivatedRoute:当前激活的路由对象,保存着当前路由的信息,如路由地址、路由参数等等。
import { switchMap } from 'rxjs/operators';
constructor(
private route: ActivatedRoute,
private router: Router,
private service: HeroService
) {}
//使用Observable对象接收路由参数
//在路由组件复用中,当路由参数改变时可通过Observable对象订阅到改变的值并做出响应
ngOnInit() {
this.id = this.route.paramMap.pipe(
switchMap((params: ParamMap) =>
console.log(params.get('id'))
);
}
```
>[info] ParamMap API是参照URLSearchParams接口来设计的。它提供了一些方法来处理对路由参数paramMap和查询参数queryParamMap中的参数访问。
- 目录结构
- 架构
- 指令
- 数据绑定
- 结构性指令
- 属性型指令
- 自定义指令
- 模板引用变量
- 属性绑定
- 事件绑定
- 组件
- 组件交互
- 管道
- 自定义管道
- 动态组件
- 变量检测机制
- 组件生命周期
- 路由
- 路由配置
- 路由导航
- 路由传值
- 父子路由
- 路由事件
- 顶级路由和特征路由
- 多重路由
- 路由守卫
- 路由守卫-简单理解
- 路由惰性加载
- 路由预加载
- 路由动画
- 网络请求
- GET请求
- POST请求
- JSOP请求
- 封装的http请求
- http拦截器
- 表单
- 响应式表单
- 驱动式表单
- CLI命令
- 启动应用
- 创建项目
- 创建组件
- 创建服务
- 创建路由守卫
- 创建特征模块
- 创建自定义指令
- 创建自定义管道
- 相关概念
- 急性加载
- 惰性加载
- 特征模块
- 常见问题
- 全局的Angular CLI大于本地的Angular CLI
- 包体优化