首頁  >  文章  >  web前端  >  在Angular2中有關自訂管道格式資料用法

在Angular2中有關自訂管道格式資料用法

亚连
亚连原創
2018-06-23 16:03:401625瀏覽

這篇文章主要介紹了Angular2管道Pipe及自訂管道格式資料用法,結合實例形式詳細分析了Angular2管道與純管道相關概念、語法及使用技巧,需要的朋友可以參考下

本文實例講述了Angular2管道Pipe及自訂管道格式資料用法。分享給大家供大家參考,具體如下:

管道(Pipe)可以依照開發者的意願將資料格式化,還可以多個管線串聯。

純管道(Pure Pipe)與非純管道(Impure Pipe)

管道分純管道(Pure Pipe)和非純管道(Impure Pipe)。預設情況下,管道都是純的,在自訂管道聲明時把pure標誌置為false,就是非純管道。如:

@Pipe({
 name: 'sexReform',
 pure:false
})

純管道和非純管道的區別:

#① 純管道:

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返回中文的男、女。

代码:

import {Pipe, PipeTransform} from '@angular/core';
@Pipe({
 name: 'sexReform',
 //非纯管道
 pure:false
})
export class SexReformPipe implements PipeTransform {
 transform(value: any, args?: any): any {
  let chineseSex;
  switch (value) {
   case 'male':
    chineseSex = '男';
    break;
   case 'female':
    chineseSex = '女';
    break;
   default:
    chineseSex = '未知性别';
    break;
  }
  return chineseSex;
 }
}

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

演示代码

组件:

import { Component, OnInit } from '@angular/core';
@Component({
 selector: 'app-pipe',
 templateUrl: './pipe.component.html',
 styleUrls: ['./pipe.component.css']
})
export class PipeComponent implements OnInit {
 date=new Date();
 money=5.9372;
 object={title:'ffff',subTitle:'subtitlefff'};
 str='abcdABCD';
 percent=0.97989;
 constructor() { }
 ngOnInit() {
 }
}

模板:

<p>
 {{date| date:&#39;y-MM-dd HH:mm:ss&#39;}} <br />
 {{object| json }} <br />
 {{str| uppercase }} <br />
 {{str| lowercase }} <br />
 {{money| number:&#39;2.4-10&#39; }} <br />
 {{money| number:&#39;5.1-2&#39; }} <br />
 {{money| currency:&#39;CNY&#39;:false:&#39;1.1-2&#39; }} <br />
 {{percent| percent:&#39;1.1-2&#39; }} <br />
 {{str| slice:1:3 }} <br />
 {{&#39;female&#39;| sexReform }} <br />
</p>

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

相关文章:

详细解读分析JavaScript代码模块

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

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

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

以上是在Angular2中有關自訂管道格式資料用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn