在 Angular 中,过滤器也叫管道。它最重要的作用就是用来格式化数据的输出。
举个简单例子:

  1. currentTime=new Date();
  1. <h1>{{currentTime | date:'yyyy-MM-dd HH:mm:ss'}}</h1>

一、内置过滤器

Angular 一共内置了一些过滤器:https://angular.io/api?type=pipe

  1. //货币转换 currency
  2. {{123 | currency }} //$123
  3. {{123 | currency:'¥' }} //¥123
  4. //格式化时间 date
  5. {{new Date() | date:'yyyyMMdd'}} //2016/11/02
  6. yyyy/yy : 2016 / 16(年)
  7. MM 11 (月)
  8. dd02 (日)
  9. h/hh : 8 / 08 (时)
  10. m/mm : 5 / 05 (分)
  11. s /ss : 9 /09(秒)
  12. EEEE/EEE :(星期)
  13. //filter
  14. filter可以将一个数组,对象,函数,字符串中选择满足条件的子集,并返回一个新数组
  15. {{arr | filter:'s'}} //选出arr数组中带 ‘s’的项
  16. //json
  17. JavaScript对象转为json对象
  18. {{{name:'jack'} | json}} // {"name":"jack"}
  19. //截取字符串和数组 limitTo
  20. str : "abcdefg"
  21. {{ str |limitTo:1 }}
  22. 1可为负值:当为负值的时候从后向前截取
  23. //将字符串数字转为数字 number
  24. {{'123.134545'| number:4}} //保留4位小数 四舍五入 默认保留3位小数
  25. //uppercase lowercase
  26. 将英文字母转为大写或小写。
  27. {{ 'Hello' | uppercase }} //HELLO
  28. {{'Hello' | lowercase}} //hello
  29. //orderBy 数组排序
  30. 默认: 正序(1-9 a-z
  31. 传参数: 按指定参数的顺序排列
  32. {{arr | orderBy:age}}

二、自定义过滤器

在复杂业务场景中,内置的过滤器肯定是不够用的,所有 Angular 也支持自定义过滤器。
https://angular.io/guide/pipes

  1. //自定义过滤器
  2. ng generate pipe msgformat
  3. //msgformat.pipe.ts
  4. import { Pipe, PipeTransform } from '@angular/core';
  5. @Pipe({
  6. name: 'msgformat'
  7. })
  8. export class MsgformatPipe implements PipeTransform {
  9. transform(value: string, ...args: unknown[]): unknown {
  10. return value.split('').reverse().join('');;
  11. }
  12. }
  13. //使用
  14. <div>{{"123"|msgformat}}</div>