```
管道对数据进行转化,给出期望的输出(类似TP5中模板使用函数)
```
## 一、使用管道格式化数据
```
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `<p>这个格式化后的日期: {{ dateTime | date }}</p>`
})
export class AppComponent{
dateTime = new Date(1988, 3, 15); // April 15, 1988
}
```
## 二、使用参数
```
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `<p>使用参数格式化日期: {{ dateTime | date:"yyy/MM/dd" }}</p>`
})
export class AppComponent{
dateTime = new Date(1988, 3, 15); // April 15, 1988
}
```
## 三、链式管道(使用多个管道)
```
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `<h1>使用多个管道格式化日期:{{ date | date:'fullDate' | uppercase}}</h1>`
})
export class AppComponent{
dateTime = new Date(1988, 3, 15); // April 15, 1988
}
```
## 四、内置管道
* Date:格式化日期
* UpperCase:转化为大写
* LowerCase:转化为小写
* Currency:把数字转换成金额字符串,具体参数配置查看[API手册
](https://angular.cn/api/common/CurrencyPipe)
* Percent:把数字转换成百分比字符串,具体参数配置查看[API手册](https://angular.cn/api/common/PercentPipe)
* Json:把一个值转换成 JSON 字符串格式。在调试时很有用。
* 等等,具体查看[API参考手册](https://angular.cn/api?type=pipe)
## 五、管道之数据映射
管道的用处非常大,就我个人而言,时间转换及数据映射比较常见。我主要想讨论一下数据映射的问题。起初打算自己写关于数据映射的管道,但是想了想,难道不同的数据映射都单独写一个管道?然后我就想有没有自带的管道实现数据映射,仔细翻了翻文档,最后终于找到了,`I18nPluralPipe`就是用于映射数据的。我们用一个最常见的数据映射例子说明,比如保存性别数据时,1 表示男,2 表示女。
~~~
@Component({
selector: 'i18n-plural-pipe',
template: `<div>{{ sex | i18nPlural: sexMapping }}</div>`
})
export class I18nPluralPipeComponent {
sex: string = '1';
sexMapping: {[k: string]: string} = {'=1': '男', '=2': '女', 'other': '其他'};
}
~~~
`I18nPluralPipe`使用了[ICU 格式](http://userguide.icu-project.org/formatparse/messages),确实长见识了。这个管道真的很好用,至少不用对每一个数据映射都写一个专用管道了。
上方示例代码中,`sexMapping`使用接口中的可索引的类型进行定义。
- 目录结构
- 架构
- 指令
- 数据绑定
- 结构性指令
- 属性型指令
- 自定义指令
- 模板引用变量
- 属性绑定
- 事件绑定
- 组件
- 组件交互
- 管道
- 自定义管道
- 动态组件
- 变量检测机制
- 组件生命周期
- 路由
- 路由配置
- 路由导航
- 路由传值
- 父子路由
- 路由事件
- 顶级路由和特征路由
- 多重路由
- 路由守卫
- 路由守卫-简单理解
- 路由惰性加载
- 路由预加载
- 路由动画
- 网络请求
- GET请求
- POST请求
- JSOP请求
- 封装的http请求
- http拦截器
- 表单
- 响应式表单
- 驱动式表单
- CLI命令
- 启动应用
- 创建项目
- 创建组件
- 创建服务
- 创建路由守卫
- 创建特征模块
- 创建自定义指令
- 创建自定义管道
- 相关概念
- 急性加载
- 惰性加载
- 特征模块
- 常见问题
- 全局的Angular CLI大于本地的Angular CLI
- 包体优化