当前位置:Gxlcms > JavaScript > 在Angular2中有关自定义管道格式数据用法

在Angular2中有关自定义管道格式数据用法

时间:2021-07-01 10:21:17 帮助过:11人阅读

这篇文章主要介绍了Angular2管道Pipe及自定义管道格式数据用法,结合实例形式详细分析了Angular2管道与纯管道相关概念、语法及使用技巧,需要的朋友可以参考下

本文实例讲述了Angular2管道Pipe及自定义管道格式数据用法。分享给大家供大家参考,具体如下:

管道(Pipe)可以根据开发者的意愿将数据格式化,还可以多个管道串联。

纯管道(Pure Pipe)与非纯管道(Impure Pipe)

管道分纯管道(Pure Pipe)和非纯管道(Impure Pipe)。默认情况下,管道都是纯的,在自定义管道声明时把pure标志置为false,就是非纯管道。如:

  1. @Pipe({
  2. name: 'sexReform',
  3. pure:false
  4. })

纯管道和非纯管道的区别:

① 纯管道:

Angular只有检查到输入值发生纯变更时,才会执行纯管道。纯变更指的是,原始类型值(String,Number,Boolean,Symbol)的改变,或者对象引用的改变(对象值改变不是纯变更,不会执行).

② 非纯管道

Angular会在每个组件的变更检测周期执行非纯管道。所以,如果使用非纯管道,我们就得注意性能问题了。

管道使用语法

{{expression | pipe : arg}}

如果是链式串联:

{{expression | pipe1 : arg | pipe2 | pipe3 }}

常用内置管道

管道类型功能
DatePipe纯管道日期格式化
JsonPipe非纯管道使用JSON.stringify()将对象转成json字符串
UpperCasePipe纯管道将文本中的字母全部转在大写
LowerCasePipe纯管道将文本中的字母全部转成小写
DecimalPipe纯管道数值格式化
CurrencyPipe纯管道货币格式化
PercentPipe纯管道百分比格式化
SlicePipe非纯管道数组或字符串取切割

DatePipe

语法:{{expression | date:format}}

expression支持日期对象、日期字符串、毫秒级时间戳。format是指定的格式,常用标志符:

y 年 y使用4位数字表示年份(2017),yy使用两位数字表示(17)
M 月 M 1位或两位数字(2或10、11、12),MM 两位数字表示,前面补0(02)
d 日 d 一位或两位数字(9) dd两位数字,前面补0(09)
E 星期 EEE 三位字母缩写的星期 EEEE 星期全称
j 12小时制时间 j (9 AM) jj (09 AM)
h 12小时制小时 h(9) hh (09)
H 24小时制小时 H(9) HH (09)
m 分 m (5) mm (05)
s 秒 s (1) ss (01)
z 时区 z China Standard Time

DecimalPipe

语法:{{expression | number[: digiInfo] }}

digiInfo格式:

{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}

即:整数位保留最小位数.小数位保留最小位数-小数位最大保留位置

默认值: 1.0-3

CurrencyPipe

语法:{{expression | currency[: currencyCode[: symbolDisplay[: digiInfo]]] }}

digiInfo格式与DecimalPipe相同,不再解释。

currencyCod是指货币代码,其值为ISO 4217标准,人民币CNY,美元USD,欧元 EUR.
symbolDisplay 是一个布尔值,true时显示货币符号($¥) false显示货币码

PercentPipe

语法:{{expression | percent[: digiInfo] }}

digiInfo格式与DecimalPipe相同,不再解释。

SlicePipe

语法:{{expression | slice: start [: end] }}

expression 可以是一个字符串或数组。字符串时,该管道调用String.prototype.slice()方法截取子串。如果是数组,调用Array.prototype.slice()方法取数组子元素。

自定义管道

除了使用内置的管道,还可以通过自定义管道实现更复杂的功能。

创建管道:

ng g pipe sexReform

angular-cli会帮我们创建SexReformPipe管道,这个管道的功能是根据male、female返回中文的男、女。

代码:

  1. import {Pipe, PipeTransform} from '@angular/core';
  2. @Pipe({
  3. name: 'sexReform',
  4. //非纯管道
  5. pure:false
  6. })
  7. export class SexReformPipe implements PipeTransform {
  8. transform(value: any, args?: any): any {
  9. let chineseSex;
  10. switch (value) {
  11. case 'male':
  12. chineseSex = '男';
  13. break;
  14. case 'female':
  15. chineseSex = '女';
  16. break;
  17. default:
  18. chineseSex = '未知性别';
  19. break;
  20. }
  21. return chineseSex;
  22. }
  23. }

重点在于实现PipeTransform接口的transform方法,定义为非纯管道仅用于演示,非纯管道对性能影响较大,尽量避免。

演示代码

组件:

  1. import { Component, OnInit } from '@angular/core';
  2. @Component({
  3. selector: 'app-pipe',
  4. templateUrl: './pipe.component.html',
  5. styleUrls: ['./pipe.component.css']
  6. })
  7. export class PipeComponent implements OnInit {
  8. date=new Date();
  9. money=5.9372;
  10. object={title:'ffff',subTitle:'subtitlefff'};
  11. str='abcdABCD';
  12. percent=0.97989;
  13. constructor() { }
  14. ngOnInit() {
  15. }
  16. }

模板:

  1. <p>
  2. {{date| date:'y-MM-dd HH:mm:ss'}} <br />
  3. {{object| json }} <br />
  4. {{str| uppercase }} <br />
  5. {{str| lowercase }} <br />
  6. {{money| number:'2.4-10' }} <br />
  7. {{money| number:'5.1-2' }} <br />
  8. {{money| currency:'CNY':false:'1.1-2' }} <br />
  9. {{percent| percent:'1.1-2' }} <br />
  10. {{str| slice:1:3 }} <br />
  11. {{'female'| sexReform }} <br />
  12. </p>

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

详细解读分析JavaScript代码模块

在微信小程序中如何实现点赞功能

有关JavaScript数组操作难点(详细教程)

使用vue如何实现无缝滚动组件

以上就是在Angular2中有关自定义管道格式数据用法的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行