angular2中管道@pipe的简单使用

需求

使用过滤,实现前台查询。

Angular2中有各种各样的类修饰器,比如:@App@Component@input@output等等,最近需要用到数据过滤用到了管道@Pipe,下面记录简单@Pipe的简单用法。

什么是pipe

就是管道,简单来说,管道的作用就是传输。并且不同的管道具有不同的作用。(其实就是处理数据)。

angular中自带的pipe函数

管道 功能
DatePipe 日期管道,格式化日期
JsonPipe 将输入数据对象经过JSON.stringify()方法转换后输出对象的字符串
UpperCasePipe 将文本所有小写字母转换成大写字母
LowerCasePipe 将文本所有大写字母转换成小写字母
DecimalPipe 将数值按照特定的格式显示文本
CurrentcyPipe 将数值进行货币格式化处理
SlicePipe 将数组或者字符串裁剪成新子集
PercentPipe 将数值转百分比格式

pipe用法

  • {{ 输入数据 | 管道 : 管道参数}} (其中‘|’是管道操作符)
  • 链式管道 {{ 输入数据 | date | uppercase}}
详细内容请参考angular官方文档Angular-pipe

pipe的基本语法

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

@Pipe({
    name: 'pipe'    // 使用时的名称
    pure: Boolean   // 纯管道与非纯管道(默认为纯管道,false时为非纯管道)
})
export class TestPipe  implements PipeTransform {
    /**
     * @param value 待处理的数据
     * @param args 附加参数
     * @return 处理完成的数据
     */
    transform(value: any, ...args: any[]): any {
        return value;
    }
}
我们大多数使用的是纯管道,对与非纯管道也不是太理解,可能以后用到了就明白了;官方是这样解释非纯管道的 Angular executes an impure pipe during every component change detection cycle. An impure pipe is called often, as often as every keystroke or mouse-move.

实现

  • 代码
import { Pipe, PipeTransform } from '@angular/core';
import { Host } from '../../entity/Host';

/**
 * 过滤:按计算机名称进行查询
 */
@Pipe({ name: 'hostPipe' })
export class HostPipe implements PipeTransform {

    hostList: Array<Host>;

    transform(value: Host[], hostName: string): any {

        // 如果Value为null,则不执行
        if (!value) {
            return;
        }
        // 如果hostName为undefined,则返回value
        if (!hostName) {
            return value;
        }

        this.hostList = [];
        value.forEach((host) => {
            // 查询与hostName相同的
            const index = host.name.indexOf(hostName);
            // 如果不是-1,则相同
            if (index !== -1) {
                this.hostList.push(host);
            }
        });

        return this.hostList;
    }
}

clipboard.png

  • 效果

clipboard.png


我的人生成长之路
Good good study, day day up!

为 API 生,为框架死,为 debug 奋斗一辈子;

889 声望
33 粉丝
0 条评论
推荐阅读
微信JSAPI支付 (签名问题)
jsapi微信底层就不过多描述了,主要记录一下,查了很多资料,发现微信返回参数不能直接返给前端使用,还需要进行一次签名,不然前台就会提示签名错误

潘佳琦阅读 301

Angular之父为什么怼React?
大家好,我卡颂。前几天,Angular之父Miško Hevery和Dan在推上发生了一段有趣的对话,对话背景大概是:传统SSR(服务端渲染)场景下使用的技术叫Hydration,Miško曾向Dan演示了一个新技术概念 —— ResumableDan认...

卡颂2阅读 721评论 2

封面图
Angular 16 正式版发布
在之前的Angularv15中,Angular团队通过将独立API从开发者预览版升级至稳定版,在Angular的简易性和开发者体验方面达到了一个重要的里程碑。如今,Angular将继续这一改进的势头,发布了自Angular最初推出以来最大...

xiangzhihong2阅读 606

Chatgpt 对程序员而言有这些妙用
ChatGPT是一种基于人工智能技术的对话机器人,可以在各种场景下辅助用户解决问题,提高效率。对于程序员而言,ChatGPT的智能化和语义理解能力,可以帮助他们更好地完成编程工作。

气势凌人的柿子2阅读 439

关于 Angular 应用的 Bootstrap 过程
在 Angular应用程序中,客户端的bootstrap过程是指启动应用程序时的一系列步骤,以加载和初始化应用程序所需的所有资源,并将应用程序渲染到浏览器上。

JerryWang_汪子熙2阅读 301

封面图
记录开发微信扫码登录过程遇到的问题(功能尚未完成)
微信对接的基本流程是:微信服务器向开发者在微信公众平台提供的服务器地址发送请求,然后服务器返回原样给微信服务器请求内容,微信服务器验证通过后对接成功。因为这个过程中涉及到了微信服务器向服务器发起请...

chshihang3阅读 173

Angular动态表单首页列表
前言之前已经介绍过:动态表单的构建动态表单的数据库的结构如何将数据库中的数据渲染出表单具体可以参考之前两篇文章,本文内容如下:显示动态表单的首页列表数据的增改效果演示:stackBlitz: [链接]1、申请类型不...

chshihang3阅读 582

为 API 生,为框架死,为 debug 奋斗一辈子;

889 声望
33 粉丝
宣传栏