Angular的管道
Angular的管道可以看作成是一个数据格式化展示的工具。管道可以将数据格式化显示,而不改变源数据。获取数据可能简单到创建一个局部变量就行,也可能复杂到从WebSocket中获取数据流。一旦取到数据,我们可以把它们原始值的toString结果直接推入视图中。 但这种做法很少能具备良好的用户体验。 比如,几乎每个人都更喜欢简单的日期格式,例如1988-04-15,而不是系统或服务端传过来的原始字符串格式 —— Fri Apr 15 1988 00:00:00 GMT-0700 (Pacific Daylight Time)。我们可以通过管道来将这个日期格式转换在渲染到视图中
管道把数据作为输入,然后转换它,给出期望的输出。
管道(Pipe)可以根据开发者的意愿将数据格式化。
内置管道
ts文件
export class EditTheDeclarationComponent implements OnInit {
public time=new Date() //获取本地当前时间
}
<div>时间:{{ time | date:"MM/dd/yy" }}</div>
<!--10/30/19-->
<div>时间:{{ time | date }}</div>
<!--Oct 30, 2019-->
管道可能接受任何数量的可选参数来对它的输出进行微调。 我们可以在管道名后面添加一个冒号( : )再跟一个参数值,来为管道添加参数(比如currency:’EUR’)。 如果我们的管道可以接受多个参数,那么就用冒号来分隔这些参数值(比如slice:1:5)。可以理解对管道进行参数化的意思是:传入某些参数,对转换结果进行限制性的格式化转换。
链式管道
//我们可以把管道链在一起,以组合出一些潜在的有用功能。
<div>时间:{{time | date:"fullDate"}}</div>
<!--Wednesday, October 30, 2019--> //将时间以fullDate类型输出
<div>时间:{{time | date:"fullDate" | uppercase}}</div>
<!--WEDNESDAY, OCTOBER 30, 2019--> //将时间以fullDate类型输出 并转化为大写字母
常用的内置管道
| 管道 | 类型 | 功能 |
|---|---|---|
| DatePipe | 纯管道 | 日期格式化 |
| JsonPipe | 非纯管道 | 使用JSON.stringify()将对象转成json字符串 |
| UpperCasePipe | 纯管道 | 将文本中的字母全部转在大写 |
| LowerCasePipe | 纯管道 | 将文本中的字母全部转成小写 |
| TitleCasePipe | 将文本转换成标题格式 | |
| DecimalPipe | 纯管道 | 数值格式化 |
| CurrencyPipe | 纯管道 | 货币格式化 |
| PercentPipe | 纯管道 | 百分比格式化 |
| SlicePipe | 非纯管道 | 数组或字符串取切割 |
| I18nPluralPipe | 根据expression的值匹配mapping中的值,并将匹配之后的值展示出来 | |
| I18nSelectPipe | 根据expression匹配mapping中的值,并且返回|匹配之后的值 |
自定义管道
在Angular中我们可以使用下面命令来快速创建一个管道
新建管道:ng generate pipe pipes/string-pi
在创建的管道ts中
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({ name: 'idNumber' })
export class StringPiPipe implements PipeTransform {
//管道所要执行的事件 这个管道是身份证号的中间部分隐藏
//例如{{Name | 管道}} value指的是Name值
transform(value): any {
//idCard 将你value传过来的值进行正则修改 之后再返回idCard
let idCard = value.replace(/(^\d{6}|\d{3})(\d{10})(\d{1})(\d{1}|X$)/, "$1**********$3$4");
return idCard;
}
}
然后在你需要的地方的 xxxx.module.ts中引入;
import { StringPiPipe } from './pipes/string-pi.pipe';
并在@NgModule的 declarations中声明;
@NgModule({
declarations: [
AppComponent,
StringPiPipe, //这一行-----------
],
imports: [
BrowserModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
OK,现在你可以在HTML文件中用了,
<div class="idcard">{{order.idNumber | idNumber }}</div>
Angular的管道的更多相关文章
- Angular 自定义管道
管道的作用就是将原始值进行转化处理,转换为所需要的值: 1. 新建sex-reform.pipe.ts文件 ng g pipe sex-reform 2. 编辑sex-reform.pipe.ts文件 ...
- angular自定义管道
原文地址 https://www.jianshu.com/p/5140a91959ca 对自定义管道的认识 管道的定义中体现了几个关键点: 1.管道是一个带有“管道元数据(pipe metadata) ...
- Angular:管道和自定义管道
①管道的使用,更多管道在angular官网上有 <p>全部转为大写:{{'hahahah' | uppercase}}</p> <p>保留两位小数:{{1.4555 ...
- Angular 4 管道
一.date管道 1.html 2. 控制器中的定义brithday 3.效果图 如果时间格式 为: 我的生日是{{birthday | date:'yyyy-MM-dd HH:mm:ss'}} 则效 ...
- 从Java角度理解Angular之入门篇:npm, yarn, Angular CLI
本系列从Java程序员的角度,带大家理解前端Angular框架. 本文重点介绍Angular的开发.编译工具:npm, yarn, Angular CLI,它们就像Java在中的Maven,同时顺便介 ...
- Angular快速学习笔记(2) -- 架构
0. angular 与angular js angular 1.0 google改名为Angular js 新版本的,2.0以上的,继续叫angular,但是除了名字还叫angular,已经是一个全 ...
- (转载)从Java角度理解Angular之入门篇:npm, yarn, Angular CLI
本系列从Java程序员的角度,带大家理解前端Angular框架. 本文是入门篇.笔者认为亲自动手写代码做实验,是最有效最扎实的学习途径,而搭建开发环境是学习一门新技术最需要先学会的技能,是入门的前提. ...
- Angular 4+ 修仙之路
Angular 4.x 快速入门 Angular 4 快速入门 涉及 Angular 简介.环境搭建.插件表达式.自定义组件.表单模块.Http 模块等 Angular 4 基础教程 涉及 Angul ...
- Angular学习笔记—架构简述
这个架构图展现了 Angular 应用中的 8 个主要构造块: 模块 (module) 组件 (component) 模板 (template) 元数据 (metadata) 数据绑定 (data b ...
- 成为优秀Angular开发者所需要学习的19件事
一款to-do app基本等同于前端开发的"Hello world".虽然涵盖了创建应用程序的CRUD方面,但它通常只涉及那些框架或库也能做到的皮毛而已. Angular看起来似乎 ...
随机推荐
- ubuntu环境下因pie选项导致双击启动失败的问题
在ubuntu环境下,链接可执行文件时增加-pie选项,双击可执行程序,无法正常启动. 对于这个现象,stackoverflow有个帖子,gcc creates mime type applicati ...
- OpenHarmony集成OCR三方库实现文字提取
1. 简介 Tesseract(Apache 2.0 License)是一个可以进行图像OCR识别的C++库,可以跨平台运行 .本样例基于Tesseract库进行适配,使其可以运行在OpenAtom ...
- 鸿蒙HarmonyOS实战-ArkUI组件(TextInput/TextArea)
一.TextInput/TextArea TextInput和TextArea组件通常用于收集用户输入的文本数据. TextInput组件通常用于单行文本的输入,它允许用户通过一个光标来输入文字,并支 ...
- RabbitMQ 07 发布订阅模式
发布订阅模式 发布订阅模式结构图: 比如信用卡还款日临近了,那么就会给手机.邮箱发送消息,提示需要去还款了,但是手机短信和邮件发送并不一定是同一个业务提供的,但是现在又希望能够都去执行,就可以用到发布 ...
- 重新点亮linux 命令树————文件特殊权限[十一]
前言 简单介绍一下文件特殊权限. 正文 SUID 用于二进制可执行文件,执行命令时取得文件属组权限 如 /usr/bin/passwd 当我们使用passwd 修改密码的时候其实是以root用户身份进 ...
- CentOS+Django+uWSGI+Celery+Supervisor配置
目录 背景 目录 安装 配置Supervisor 1.生成配置文件 2. 修改配置文件 3. 创建进程文件 创建 uwsgi.conf 进程文件 创建celery进程文件 启动supervisor 启 ...
- 【转】Java程序员常用工具类库 - 目录
原文地址:http://rensanning.iteye.com/blog/1553076 有人说当你开始学习Java的时候,你就走上了一条不归路,在Java世界里,包罗万象,从J2SE,J2ME,J ...
- Redis介绍、使用、数据结构和集群模式总结
Redis(Remote Dictionary Server)是一个开源的,基于内存的数据结构存储系统,它支持多种数据结构,如字符串(String).列表(List).集合(Set).有序集合(Sor ...
- react 框架(antd)的使用方法
脚手架 安装 npm install -g create-react-app 引入: import React, { Component } from "react"; im ...
- 力扣415(java)-字符串相加(简单)
题目: 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回. 你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换 ...