如何从角度2中的组件创建和调用管道?

Arr*_*ron 14 pipes-filters angular

我想创建一个动态管道,我将从组件中调用它.

import {Component, Pipe, PipeTransform} from 'angular2/core';

@Pipe({ name: 'filter', pure: false })
export class filter implements PipeTransform {
  transform(value) {
    this.items1=value;
    this.ticket1 = [];
    if (this.items1.length >0) {
      for (var i = 0; i < this.items1.length; i++) {
        this.ticket1.push(this.items1[i])
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我想从组件中调用此管道.

Thi*_*ier 25

您需要在pipes组件的属性中指定它

@Component({
  pipes: [ filter ] 
})
export class MyComponent {
  (...)
}
Run Code Online (Sandbox Code Playgroud)

并在您的模板中使用它:

{{someArray | filter}}
<div *ngFor="someArray | filter">(...)</div>
Run Code Online (Sandbox Code Playgroud)

编辑

如果要直接在组件类中调用管道,则需要实例化它并调用其tranform方法:

@Component({
  (...)
})
export class MyComponent {
  constructor() {
    let filterPipe = new filter();
    let arr = [ ... ];
    var fiteredArr = filterPipe.transform(arr);
  }
  (...)
}
Run Code Online (Sandbox Code Playgroud)

  • 似乎管道属性不再存在.仍然是在本地导入管道的方式吗? (12认同)
  • 您需要直接实例化它并调用`transform`方法.我更新了我的答案...... (2认同)