angular6之pipe管道

作为前端开发人员,我们在网站开发时,需要读取后端的接口进行视图层的数据展示。我们经常会遇到接口给予我们的值不是最终展现的数据,例如:后端返回的金额是number类型额数据,我们需要遇到千分位用逗号隔开(10000 -> 10,000),重量10000g转成10kg等,这些需要前端把数据进行简单的转换成对用户友好的格式。在angular6中pipe便发挥这样的作用,熟悉vue的同学会感觉非常类似vue中的computed计算属性。

下面介绍angular6中pipe的具体用法

1、ng g pipe <pipe名称>

pipe名称可以带有路径,如pipes/pipename 这样就会在src/app目录生成pipes目录,并在齐目录下生成文件pipename.pipe.ts

2、pipe文件中的代码

(1)、引入相应模块

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

(2)、声明pipe

@Pipe({

  name: ‘weightChange‘

})

name值为代码中需要用到的对应管道的名称

声明pipe时还有另外一个属性pure,接受bool值,用来声明是不是纯管道,默认情况下是纯管道,那么纯管道和非纯管道有什么区别呢?

管道中纯管道和非纯管道之间的区别关键在于:

如果是纯管道,他检测的深读很低,比如检测一个对象数组,对象数组中的对象的某个属性发生变化的时候,纯管道是检测不到的,这时候就需要用到非纯管道。

但是要注意非纯管道对性能影响较大。具体可以参考https://angular.cn/guide/pipes 官方解释。

(3)、pipe类

export class weightChangePipe implements PipeTransform {

  transform(value: any, args?: any): any {

    return value&&value>1000?value/1000+‘kg‘:value+‘g‘;

  }

}

transform方法将原始数据作为参数,方法中的具体代码是将原始值转化成最终值,以上代码是将大于1000g的值转成kg单位的例子

(4)、将改管道在angular的模块中进行声明

@NgModule({

  declarations: [

    ........

    TimechangePipe,

    ......

  ]

})

这样就可以在具体的代码中直接使用了

例如在代码中:

<span>{{ riceWeight | weightChange }}<span>

angular中引入了概念比如service, directive,pipe等将一些公共的代码从业务代码中抽离,其最终目的就是解耦,降低代码的耦合度。通过他的框架可以更好的管理应用程序。

原文地址:https://www.cnblogs.com/leejay6567/p/10017802.html

时间: 2024-12-21 07:41:21

angular6之pipe管道的相关文章

redis pipe管道

redis命令在从提交到返回处理结果的过程中,消耗的时间我们称之为RTT(往返时间). 在需要批量执行redis 命令的场景下,如果命令单条逐个执行,那么总共花费的时间是命令条数 N * RTT. redis 提供了管道技术来提高批量执行效率,即将多个命令打包发送给redis服务端,所有命令执行完后,再将所有结果打包返回. 在所有命令执行结束前,redis服务器会缓存已执行结束的结果. 在redis-cli命令行中, 使用redis管道技术时,我们通常将待执行的命令放到一个文本里,比如comma

pipe()管道最基本的IPC机制

<h4>进程间通信 fork pipe pie_t 等用法(管道机制 通信)</h4>每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲 区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication).如下图所示. <a href="http://www.emacsvi.co

fork产生子进程利用pipe管道通信

http://siqun.blog.163.com/blog/static/213496001201341231121720/ 转载链接:http://hi.baidu.com/hj11yc/item/9a2ea30cca773077bfe97efc注:加了一点内容 进程间通信 fork pipe pie_t 等用法(管道机制 通信) 每个进程各自有不同的用户地址空间,任 何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲 区,进程1把数据从用户

python线程,pipe管道通信原理

Pipe管道: * 管道实例化后会产生两个通道,分别交给两个进程* 通过send和recv来交互数据,这是一个双向的管道,child和parent可以互相收发 from multiprocessing import Process, Pipe def f(conn): conn.send([42, None, 'hello']) conn.send([43,32]) print(conn.recv()) conn.close() if __name__ == '__main__': #Pipe实

pipe管道

pipe()学习 例1: 进程内读写管道,代码如下: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> #include <sys/stat.h> #include <unistd.h> #include <sys/types.h> #include <errno.h> #include <signal

Python multiprocessing模块中的Pipe管道

multiprocessing.Pipe([duplex]) 返回2个连接对象(conn1, conn2),代表管道的两端,默认是双向通信.如果duplex=False,conn1只能用来接收消息,conn2只能用来发送消息.不同于os.open之处在于os.pipe()返回2个文件描述符(r, w),表示可读的和可写的 实例如下: #!/usr/bin/python #coding=utf-8 import os from multiprocessing import Process, Pip

关于pipe管道的读写端关闭问题

知识概述 通过pipe在内核中创建一个文件,然后可以实现两个进程通信 管道是一种最基本的IPC机制,由 pipe 函数创建: 1 #include <unistd.h> 2 int pipe(int filedes[2]); 调用 pipe 函数时在内核中开辟一块缓冲区(称为管道)用于通信,它有一个读端一个写端,然后通过 filedes 参数传出给用户程序两个文件描述符, filedes[0] 指向管道的读端, filedes[1] 指向管道的写端(很好记,就像0是标准输入1是标准输出一样).

python中multiprocessing模块之Pipe管道

multiprocessing.Pipe([duplex]) 返回2个连接对象(conn1, conn2),代表管道的两端,默认是双向通信.如果duplex=False,conn1只能用来接收消息,conn2只能用来发送消息.不同于os.open之处在于os.pipe()返回2个文件描述符(r, w),表示可读的和可写的 实例如下: #!/usr/bin/python #coding=utf-8 import os from multiprocessing import Process, Pip

pipe管道——进程通信