iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >Angular中如何实现自定义管道
  • 933
分享到

Angular中如何实现自定义管道

2024-04-02 19:04:59 933人浏览 独家记忆
摘要

这篇文章给大家分享的是有关angular中如何实现自定义管道的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、管道的作用方便我们在模板中对我们的数据进行格式化处理。二、内置的常用

这篇文章给大家分享的是有关angular中如何实现自定义管道的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一、管道的作用

方便我们在模板中对我们的数据进行格式化处理。

二、内置的常用管道

具体api参照官网查询使用

  • DatePipe: 格式化日期

  • UpperCasePipe: 文本转为全部大写

  • LowerCasePipe: 文本转为全部小写

  • TitleCasePipe: 文本转为标标题形式(如: hello world=>Hello World)

  • KeyValuePipe: 将对象转为键值对形式

  • JSONPipe: 转为jsON字符串(调试代码时还是很有用的)

三、Angular管道特点

  • 管道串联:将多个管道进行串联对一个数据进行多次处理得到最终的效果。

  • 管道优先级:主要提到管道优先级要大于三目表达式的优先级,需要管道对三目表达式的结果处理请用小括号包裹。

  • 纯/非纯管道:

    • 管道默认为纯管道,纯管道必须是纯函数。

    • 基础类型和引用对象的引用变更时纯管道执行。

    • 复合对象变更(更改数组元素)时非纯管道执行。

四、自定义管道三部曲

  • 自定义管道类并实现PipeTransfORM接口

  • 通过@Pipe装饰器将新建的类声明为Angular管道

  • 注入管道,如在app.module.tsdeclarations数组中配合新建的管道类

五、自定义管道项目实践

背景:

  • 我们最近需要在IE11浏览器上跑我们的Angular项目,因为最开始没有考虑IE的兼容问题,使得其中最明显的一个问题得以暴露,我们的列表接口的时间列全都了。

  • 因为接口返回的时间格式大多是“yyyy-MM-dd hh:mm:ss”,为了避免一个旧数据格式的不统一我们还会在模板中使用DatePipe管道来再次格式化数据,但是在IE浏览器环境new Date("2020-12-12 13:10:54")会提示无效的时间。

处理:

  • 通过搜索可以得到很多一致的处理方案就是将年月日中间的“-”进行替换为“/”。

  • 我考虑的解决方案就是通过自定义管道来对DatePipe扩展,在自定义管道中加入判断浏览器环境来对date字符串进行处理。

遗留:

  • 遗留问题就是全局替换的风险还是感觉有点高。。。有实用的方案请支招呀。

Angular中如何实现自定义管道

管道类说明

  • transform函数实现自PipeTransform接口,参数value为我们需要处理的数据,参数args为按什么样式来格式化。

  • 通过return将我们处理后的数据进行返回即可。

  • 管道通Angular的模块一样需要进行注册后使用。

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

@Pipe({ name: "gDate", pure: true })
export class GDatePipe implements PipeTransform {
  transform(value: any, ...args: any[]) {
    let time = "";
    if (this.isIE()) {
      time = new DatePipe("en-US").transform(value.replace(/-/g, "/"), ...args);
    } else {
      time = new DatePipe("en-US").transform(value, ...args);
    }
    return time;
  }

  isIE(): boolean {
    return "ActiveXObject" in window;
  }
}

感谢各位的阅读!关于“Angular中如何实现自定义管道”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Angular中如何实现自定义管道

本文链接: https://www.lsjlt.com/news/80239.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Angular中如何实现自定义管道
    这篇文章给大家分享的是有关Angular中如何实现自定义管道的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、管道的作用方便我们在模板中对我们的数据进行格式化处理。二、内置的常用...
    99+
    2022-10-19
  • Angular中的管道怎么自定义
    本篇内容介绍了“Angular中的管道怎么自定义”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是管道(PIPE)PIPE,翻译为管道。A...
    99+
    2023-07-04
  • Angular中如何自定义创建指令
    小编给大家分享一下Angular中如何自定义创建指令,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!指令介绍在 Angular 中有三种类型的指令:组件,有模板的指...
    99+
    2023-06-14
  • Angular如何使用ControlValueAccessor实现自定义表单控件
    这篇文章主要介绍了Angular如何使用ControlValueAccessor实现自定义表单控件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。本篇文章给大家介绍一下Angu...
    99+
    2023-06-14
  • Angular中如何自定义视频播放器
    本篇内容主要讲解“Angular中如何自定义视频播放器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Angular中如何自定义视频播放器”吧!实现的功能如下:播...
    99+
    2022-10-19
  • Angular怎么利用service实现自定义服务
    这篇文章主要介绍“Angular怎么利用service实现自定义服务”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Angular怎么利用service实现自定义服务...
    99+
    2022-10-19
  • Angular如何使用输入框实现自定义验证功能
    这篇文章将为大家详细讲解有关Angular如何使用输入框实现自定义验证功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。此插件使用angular.js、JQuery实现。...
    99+
    2022-10-19
  • Android如何实现自定义View中attrs.xml
    这篇文章主要为大家展示了“Android如何实现自定义View中attrs.xml”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android如何实现自定义View中attrs.xml”这篇文章...
    99+
    2023-05-30
    android view attrs.xml
  • php如何实现自定义url
    这篇文章将为大家详细讲解有关php如何实现自定义url,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php实现自定义url的方法:1、通过mod_rewrite配置htaccess文件实现URL重写;2、...
    99+
    2023-06-20
  • Android Compose自定义TextField如何实现自定义的输入框
    这篇文章主要介绍Android Compose自定义TextField如何实现自定义的输入框,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!简单自定义BasicTextField示例代码 var&n...
    99+
    2023-06-29
  • Android自定义组件:2、如何实现和使用自定义组件、自定义属性
    声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!! 目录 一、前言 二、如何实现自定义组件 步骤1:写 attrs.xml 资源文件 1、...
    99+
    2022-06-06
    属性 自定义属性 Android
  • Java中线程池自定义如何实现
    这篇“Java中线程池自定义如何实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java中线程池自定义如何实现”文章吧。线...
    99+
    2023-07-05
  • Java 项目中如何实现自定义ArrayList
    本篇文章为大家展示了Java 项目中如何实现自定义ArrayList,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java 中模仿源码自定义ArrayList最近看了下ArrayList的源码,抽空...
    99+
    2023-05-31
    java 自定义 arraylist
  • Angular中如何自定义结构型指令和属性型指令
    今天小编给大家分享一下Angular中如何自定义结构型指令和属性型指令的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、自定...
    99+
    2023-07-05
  • 如何自定义配置Angular CLI下的Webpack和loader处理
    今天就跟大家聊聊有关如何自定义配置Angular CLI下的Webpack和loader处理,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1 Ang...
    99+
    2022-10-19
  • java如何实现自定义zip包
    java如何实现自定义zip包?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.配置pom.xml文件,添加build节点<build> &l...
    99+
    2023-05-31
    java zip ava
  • C#如何实现自定义屏保
    这篇文章主要介绍“C#如何实现自定义屏保”,在日常操作中,相信很多人在C#如何实现自定义屏保问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#如何实现自定义屏保”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-07-04
  • WPF自定义控件如何实现
    今天小编给大家分享一下WPF自定义控件如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。方式一:基于现有控件进行扩展,如...
    99+
    2023-07-05
  • html如何实现自定义列表
    小编给大家分享一下html如何实现自定义列表,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!定义列表不仅仅是一列项目,而是项目及其注释的组合。列表以 <dl&...
    99+
    2023-06-17
  • Docker如何实现自定义网络
    小编给大家分享一下Docker如何实现自定义网络,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、自定义网络实现容器互联四类网络模式,使用docker netwo...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作