Angular2+ 管道学习第二篇
来源:互联网 发布:淘宝客推广api 申请 编辑:程序博客网 时间:2024/06/05 01:09
自定义管道:
ng g p express 新建一个管道
import { Pipe, PipeTransform } from '@angular/core';@Pipe({ name: 'express'})export class ExpressPipe implements PipeTransform { transform(value: number, exponent: string): number { let exp=parseFloat(exponent); return Math.pow(value,isNaN(exp)?1:exp); //幂次方 }}
1.管道是一个带有”管道元数据” 装饰器的类;2.这个管道实现了pipeTransform接口的transform方法,该方法接受一个输入值和一些可选参数,并返回转换后的值;3.当输入的值传给transform方法时,还会带上另一个参数,比如我们这个管道中exponent;4.我们通过@pipe 装饰器告诉Angular:这是一个管道,该装饰器是从Angular的core库引入的;5.这个@Pipe允许我们自定义管道名字;这个名字会运用在模板表达式中,它必须是一个有效的javascript标识符;6.transform方法是管道的基本要素,PipeTransform接口中定义了它,并用它指导各种工具和编译器
如何在组件中使用这个管道?
<p>This value {{2 | express:10}}</p>结果:This value 1024若:
<p>This value {{2 | express:'d'}}</p>结果:This value 2
注意两点:
1. 使用自定义管道的方式和内置管道完全相同;
2. 我们必须在AppModule的declarations数组中包含这个管道;
注意:内置管道就不需要在这里引入
图片管道:
import { Pipe, PipeTransform } from '@angular/core';@Pipe({ name: 'imagepool'})export class ImagepoolPipe implements PipeTransform { public value; transform(value: any, args?: string): any { if(args){ return args; } return null; }}
原理是这样的:外面只要给我图片的编号id;通过管道自动显示图片;
public args; private _images:Array<ImageItem>=[]; constructor(){ this._images=[ {id:1,url:'./assets/map.jpg'}, {id:2,url:'./assets/FM.jpg'}, {id:3,url:'./assets/news.jpg'} ] } get(id:number) :string{ for(let i=0;i<this._images.length;i++){ if(this._images[i].id===id){ this.args=this._images[i].url; return this.args; } } return null; } getIcon(args:number):number{ return args; } <img src={{getIcon(1)|imagepool:get(getIcon(1))}}/>动态模拟数据:调用getIcon方法即可;
管道类型:
纯管道和非纯管道:
纯管道:Angular只有在它检测到输入值发生了纯变更时才会执行纯管道。纯变更是指对原始类型值(
String
、Number
、Boolean
、Symbol
)的更改, 或者对对象引用(Date
、Array
、Function
、Object
)的更改。Angular会忽略(复合)对象内部的更改。如果我们更改了输入日期(Date
)中的月份、往一个输入数组(Array
)中添加新值或者更新了一个输入对象(Object
)的属性,Angular都不会调用纯管道。非纯管道:
这样就是非纯管道;
区别就是你随便改动一个,angular都会检测更新;
阅读全文
1 0
- Angular2+ 管道学习第二篇
- angular2系统学习 - 管道
- 5.揭秘angular2学习 ------- 管道
- Angular2之管道学习笔记
- Angular2+ 管道学习第一篇
- 如何自定义Angular2 管道
- angular2--pipe管道使用
- Angular2-管道Pipe
- Angular2 管道 pipe
- Angular2 初识管道
- Linux学习第二十四篇--连续命令的逻辑,管道符及管道命令
- Asp.net管道 (第二篇)
- Asp.net管道 (第二篇)
- angular2.0如何使用管道?
- angular2.0如何自定义管道?
- Angular2—搜索功能(管道)
- Angular2学习
- Angular2 学习
- 苹果开发者账号
- uboot目录
- oracle部分函数使用汇总 NULLIF函数 decode ,COALESCE,concat ,nvl,nvl2
- JQuery插件(三)之growl
- 每天一个linux命令(13):less 命令
- Angular2+ 管道学习第二篇
- Java 项目 个人帐目管理系统
- KMP题目整合
- Linux学习第一天
- oracle 学习笔记
- 用户线程和内核线程的区别
- 每天一个linux命令(14):head 命令
- ES6之Babel的各种坑直接
- Git版本管理工具使用