ng2自定义管道

Posted 枫叶布

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ng2自定义管道相关的知识,希望对你有一定的参考价值。

一、管道的作用及本质

作用:数据处理

本质:公用的方法

二、定义管道组件

//summary.pipe.ts
import { Pipe, PipeTransform } from \'@angular/core\'; @Pipe({
name:
\'summary\',
// pure: false 管道默认为纯管道,如果加了pure:false 则为非纯管道
  // 纯管道只能检测纯变更(原始类型(String Number Boolean Symbol)值的更改,或者对对象引用(Date Array Function Object)的更改

}) export class SummaryPipe implements PipeTransform { transform(value: number[], args: any[]): any{return value.reduce((prev,next)=>{prev + next}); //数组求和 } }

三、module组件中引入管道

//app.module.ts
import { NgModule } from \'@angular/core\';
import { BrowserModule } from \'@angular/platform-browser\';
import { AppComponent } from \'./app.component\';
import { SummaryPipe} from \'./summary.pipe\';

@NgModule({
  imports: [
    BrowserModule,
    SummaryPipe    //管道引入
  ],
  declarations: [
    AppComponent
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule { }

四、组件中使用管道

// app.component.ts
import { Component } from \'@angular/core\'; @Component({ selector: \'my-app\', template: ` <div><span *ngFor="let i of list" >{{i}}&nbsp;</span></div>
<div>{{list | summary:value}}</div>

 

  //模板中使用管道
    <button (click)="addNum()">add 4</button>
  `,
  styleUrls:[\'./app.component.css\']
})
export class AppComponent {
  list: number[] = [1,2,3];
  addNum() {
    this.list.push(4);
  }
}

五、页面效果

1.纯管道

点击按钮之后

2.非纯管道

点击按钮之后从图中可以看出,使用非纯管道实现了累加,而使用纯管道不能实现累加

六、说明

模板中可以在管道后面加冒号:如:

<div>{{list | summary:value}}</div>

这里的value则为传给管道的参数(args

以上是关于ng2自定义管道的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2 (ng2) 在 [class.whatever] 中使用异步管道

如何在 ng2-tag-input 中使用自定义样式组件作为标签背景颜色?

VSCode自定义代码片段——CSS选择器

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段(vue主模板)

VSCode自定义代码片段——声明函数