Angular中的管道(Pipe)

news2024/11/24 22:38:16

Angular中的管道(Pipe)


文章目录

  • Angular中的管道(Pipe)
    • 前言
    • 一、内置管道
      • 1. date管道格式化日期
      • 2. currency管道格式化货币
      • 3. uppercase和lowercase管道转换字符串大小写
      • 4. 小数位数
      • 5. JavaScript 对象序列化
      • 6. slice
      • 7. 管道链
    • 二、自定义管道


前言

Angular中的管道(Pipes)是一种强大的工具,用于处理和转换数据,并将其呈现在视图中。这些管道可以执行各种任务,如排序、格式化和过滤数据。它们提供了一种方便的方式来在HTML模板中转换数据,使得数据的展示更符合用户的需要。

管道的基本用法是,通过声明一个管道类来定义一个管道。在管道类中,通常会有一个transform方法,该方法负责接收输入数据,并将其转换为所需的输出格式。然后,在模板中,可以使用管道操作符 | 将管道应用于数据,从而将数据转换为所需的格式。

Angular提供了多种内置的管道,如date管道用于格式化日期,currency管道用于格式化货币值,uppercase和lowercase管道用于转换字符串的大小写等。这些内置管道能够满足大多数常见的数据转换需求。

此外,Angular还支持自定义管道。开发者可以根据自己的需求创建自定义管道,实现特定的数据转换逻辑。自定义管道可以带有参数,以便在使用时提供额外的配置选项。

需要注意的是,Angular中的管道分为纯管道和非纯管道。纯管道只会在输入数据发生基本类型的变化或引用类型引用的变化时触发转换。而非纯管道则会在任何输入值的变化时都触发转换,包括对象属性的变化。因此,在选择使用哪种类型的管道时,需要根据具体的需求和性能考虑来决定。

一、内置管道

1. date管道格式化日期

short: 等价于 M/d/yy, h:mm a(例如:6/15/15, 9:03 AM)
medium: 等价于 MMM d, y, h:mm:ss a(例如:Jun 15, 2015, 9:03:01 AM)
long: 更详细的日期和时间(包括星期和时区)
full: 包含星期、日期、月份、年份和时间的完整格式
shortDate: 只包含日期部分(例如:M/d/yy)
mediumDate: 更详细的日期格式(例如:MMM d, y)
longDate: 更长的日期格式
shortTime: 只包含时间部分(例如:h:mm a)
mediumTime: 更详细的时间格式(例如:h:mm:ss a)

此外,你还可以使用特定的模式字符串来定义自定义的日期和时间格式。例如:

yyyy-MM-dd: 年-月-日格式(例如:2023-04-30)
HH:mm:ss: 24小时制的时间格式(例如:14:30:00)

这是一个示例代码

app.component.html

<p>今天的日期是:{{ currentDate | date:'fullDate' }}</p>
<p>今天的日期是:{{ currentDate | date:'longDate' }}</p>
<p>今天的日期是:{{ currentDate | date:'shortTime' }}</p>
<p>今天的日期是:{{ currentDate | date:'yyyy-MM-dd HH:mm:ss' }}</p>

app.component.ts

  currentDate = new Date();  

在这里插入图片描述

2. currency管道格式化货币

currency管道主要依赖于两个参数:

货币代码(Currency Code): 这是一个遵循ISO 4217标准的货币代码,用于指定要格式化的货币类型。例如,'USD’代表美元,'EUR’代表欧元,'CNY’代表人民币等。

显示符号(Display Symbol): 这是一个布尔值,用于指示是否应该在格式化后的字符串中包含货币符号。例如,如果设置为true,并且货币代码是’USD’,则格式化后的字符串将包含美元符号($)。如果设置为false,则不会包含货币符号。

USD:美元(United States Dollar)
EUR:欧元(Euro)
GBP:英镑(Great Britain Pound)
JPY:日元(Japanese Yen)
CNY:人民币(Chinese Yuan)
RUB:俄罗斯卢布(Russian Ruble)
AUD:澳元(Australian Dollar)
CAD:加元(Canadian Dollar)

还有很多

app.component.html

<p>商品价格:{{ productPrice | currency:'RMB':true }}</p>
<p>商品价格:{{ productPrice | currency:'CNY':true }}</p>
<p>商品价格:{{ productPrice | currency:'USD':true }}</p>
<p>商品价格:{{ productPrice | currency:'EUR':true }}</p>
<p>商品价格:{{ productPrice | currency:'EUR':false }}</p>

app.component.ts

  productPrice = 9.99;  

在这里插入图片描述
这里的CNY输出的时候变成了商品价格:CN¥9.99,好像是本地化配置不对,还没找到解决方法。

用另外一种方式输出

app.component.ts 声明一个方法

  formatCurrency(value: number): string {  
    return '¥' + value.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ',');  
  } 

直接在app.component.html调用就行

<p>商品价格:{{ formatCurrency(productPrice) }}</p>

在这里插入图片描述

3. uppercase和lowercase管道转换字符串大小写

app.component.html

<p>原始字符串:{{ message }}</p>  
<p>大写字符串:{{ message | uppercase }}</p>  
<p>小写字符串:{{ message | lowercase }}</p> 

app.component.ts

  message = 'Hello, Angular!';  

在这里插入图片描述

4. 小数位数

app.component.html

<!-- 接收的参数格式为{最少整数位数}.{最少小数位数}-{最多小数位数} -->
<p>{{num | number:'1.2-4'}}</p>

app.component.ts

  num = 54545641.99666666

在这里插入图片描述

5. JavaScript 对象序列化

app.component.html

<p>{{ { name: 'semlinker',age:18,sex:'男' } | json }}</p>

在这里插入图片描述

6. slice

<p>{{ 'semlinker' | slice:0:3 }}</p>

在这里插入图片描述

7. 管道链

<p>{{ 'semlinker' | slice:0:3 | uppercase }}</p>

在这里插入图片描述

二、自定义管道

自定义管道(Pipe)是一个用于在模板表达式中对值进行转换的类。它们可以被用来格式化文本、转换数据类型等。以下是一个简单的自定义管道示例,它将输入的文本进行重复。

创建一个新的 TypeScript 文件repeat.pipe.ts, 在你的 Angular 项目中,并在其中定义你的管道类。

import { Pipe,PipeTransform } from "@angular/core";

@Pipe({
    name:'repeat'
})

export class RepeatPipe implements PipeTransform{
    transform(value: string, times: number = 1): string {  
        if (!value) return '';  
        if (times < 1) return value;  
        return value.repeat(times);  
    }
}
<p ngNonBindable>{{ 'lo' | repeat:3 }}</p>
<p>{{ 'lo' | repeat:3 }}</p>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1634744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CogVLM/CogAgent环境搭建推理测试

引子 对于多模态大语言模型&#xff0c;一直没有怎么接触。刚巧一朋友有问到这方面的问题&#xff0c;也就顺手调研下。智谱AI的东西一直以来&#xff0c;还是很不错的。ChatGLM的忠实fans&#xff0c;看到白嫖网站github上有他们开源的多模态CogVLM/CogAgent&#xff0c;那就…

Java项目:基于SSM框架实现的实践项目管理系统(ssm+B/S架构+源码+数据库+毕业论文+开题报告)

一、项目简介 本项目是一套基于SSM框架实现的实践项目管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff…

systemserver为啥很少同步跨进程调用app/DeadSystemException相关问题分析套路

背景&#xff1a; 有学员分享了一个问题&#xff0c;说monkey测试过程中有一系列问题属于同类的&#xff0c;具体看如下截图&#xff1a; 可以看到这里的有很多应用都进行了crash&#xff0c;而且crash原因居然都是写着 DeadSystemException: The system died; earlier logs …

《Redis使用手册之散列》

《Redis使用手册之散列》 **《Redis使用手册之散列》****散列简介****HSET&#xff1a;为字段设置值****HSETNX&#xff1a;只在字段不存在的情况下为它设置值****HGET&#xff1a;获取字段的值****HINCRBY&#xff1a;对字段存储的整数值执行加法或减法操作****HINCRBYFLOAT&a…

基于飞腾D2000全国产化高速公路一体化收费站解决方案:站数据服务器、站AI服务器、收费系统、监控系统

高速公路一体化收费站解决方案 行业 交通工程及沿路设施作为公路的一个重要组成部分&#xff0c;对城市互联和城市发展具有重要意义&#xff0c;因此围绕高速公路的专用收费 站设计和建设&#xff0c;将有效促进枢纽集散系统与高速公路连通&#xff0c;显著提升城市高速集散能…

Flexible布局在Web前端开发中的实际应用

随着Web前端技术的不断发展&#xff0c;Flexible布局&#xff08;弹性布局&#xff09;已成为现代网页设计中不可或缺的一部分。它提供了一种高效、灵活的方式来组织和管理页面元素&#xff0c;使开发者能够轻松应对各种复杂的布局需求。本文将通过一个实际的应用案例来介绍Fle…

echarts开发技巧

tooltip 提示框组件相关的行为&#xff0c;必须引入提示框组件后才能使用。 tooltip: {trigger: axis,axisPointer: {type: cross,label: {backgroundColor: #6a7985,},},//为弹出层的value值增加百分号valueFormatter: function (value) {return value %}, }, tooltip.axi…

确定性最大似然(DML)估计测角

1. 最大似然函数 贝叶斯方法是基于统计理论的一种经典方法&#xff0c;适合于有关参数估计问题。最大似然 (Maximum Likelihood&#xff0c;ML) 估计方法就是贝叶斯估计方法的一种特例&#xff0c;是在已知高斯噪声情况下的贝叶斯最优估计。在ML算法中&#xff0c;观测所得信号…

postman一直转圈圈,无法启动

解决 地址栏输入%appdata%进入此目录&#xff0c;删除%appdata%目录下的postman文件可以解决问题。

公考学习平台|基于SprinBoot+vue的公考学习平台(源码+数据库+文档)

公考学习平台目录 目录 基于SprinBootvue的公考学习平台 一、前言 二、系统设计 三、系统功能设计 5.1用户信息管理 5.2 视频信息管理 5.3公告信息管理 5.1论坛信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&…

【华为】NAT的分类和实验配置

【华为】NAT的分类和实验配置 NAT产生的技术背景IP地址分类NAT技术原理NAT分类静态NAT动态NATNAPTEasy IP&#xff08;PAT&#xff09;NAT Server 配置拓扑静态NAT测试抓包 动态NAT测试抓包 NAPT测试抓包 PAT测试抓包 NAT Server检测抓包 PC1PC2服务器 NAT产生的技术背景 随着…

Android数据恢复:如何在手机上恢复丢失的文件和照片

我们都有 我们错误地从手机中删除重要内容的时刻。确实如此 不一定是我们的错。其他人可以对您的手机数据执行此操作 有意或无意。这在某个时间点发生在我们所有人身上。 但是&#xff0c;今天市场上有各种各样的软件可以 帮助恢复已删除的文件。这些类型的软件被归类为数据恢复…

PyTorch如何修改模型(魔改)

文章目录 PyTorch如何修改模型&#xff08;魔改&#xff09;1.修改模型层(模型框架⭐)1.1通过继承修改模型1.2通过组合修改模型(重点学&#x1f440;)1.3通过猴子补丁修改模型 2.添加外部输入3.添加额外输出参考 PyTorch如何修改模型&#xff08;魔改&#xff09; 对模型缝缝补…

vue知识

一、初始vue Vue核心 Vue简介 初识 (yuque.com) 1.想让Vue工作&#xff0c;就必须创建一个Vue实例&#xff0c;且要传入一个配置对象 2.root容器里的代码依然符合html规范&#xff0c;只不过混入了一些特殊的Vue语法 3.root容器里的代码被称为【Vue模板】 4.Vue实例和容器…

TreeSet 和 TreeMap 和 HashSet 和 HashMap

一、二叉搜索树 1、概念 &#xff08;1&#xff09;二叉搜索树 要么是一棵空树&#xff0c;要么就得满足左子树上所有结点的值都小于根结点的值&#xff0c;右子树上所有结点的值都大于根结点的值&#xff0c;即左边比我小&#xff0c;右边比我大。二叉树的左右子树也分别都是…

ssm092基于Tomcat技术的车库智能管理平台+jsp

车库智能管理平台设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本车库智能管理平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短…

【稳定检索|投稿优惠】2024年应用数学、建模与计算机工程国际会议(IASAMCE 2024)

2024 International Conference on Applied Mathematics, Modeling, and Computer Engineering 一、大会信息 会议名称&#xff1a;2024年应用数学、建模与计算机工程国际会议 会议简称&#xff1a;IASAMCE 2024 收录检索&#xff1a;提交Ei Compendex,CPCI,CNKI,Google Schola…

C#编程模式之装饰模式

创作背景&#xff1a;朋友们&#xff0c;我们继续C#编程模式的学习&#xff0c;本文我们将一起探讨装饰模式。装饰模式也是一种结构型设计模式&#xff0c;它允许你通过在运行时向对象添加额外的功能&#xff0c;从而动态的修改对象的行为。装饰模式本质上还是继承的一种替换方…

设计模式之监听器模式ListenerPattern(三)

一、介绍 监听器模式是一种软件设计模式&#xff0c;在对象的状态发生改变时&#xff0c;允许依赖它的其他对象获得通知。在Java中&#xff0c;可以使用接口和回调机制来实现监听器模式。 二、代码实例 1、事件Event类 package com.xu.demo.listener;// 事件类 public class…

QT-QTCreator环境配置

准备工作&#xff1a; 下载QT: 链接&#xff1a;https://pan.baidu.com/s/1prJcsC4DGqhKiXvLuPQFVA?pwd60b3 提取码&#xff1a;60b3下载WindowsKits&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1QNiS3HpbH5M5kXx5AhkqnQ?pwde2h8 提取码&#xff1a;e2h8安装的…