Angular2过滤器问题

时间:2016-08-29 15:51:14

标签: angular

这里是我如何使用过滤器:

  <ion-item *ngFor="let contact of contacts | isMember">
           <ion-label>{{contact.name}}</ion-label>

           {{contact.phoneNumber}}-{{contact.isMember}}
       </ion-item>

以下过滤器定义:

import { Pipe, PipeTransform } from '@angular/core';
@Pipe({name: 'isMember'})
export class IsMemberPipe implements PipeTransform {
    transform(value: any): any {

        if (value.isMember === true) {
            return value;
        }
        return undefined;

    }
}

目标是仅显示将isMember标志设置为true的行。

TypeError: Cannot read property 'isMember' of undefined

这是一个plnkr:

http://plnkr.co/edit/fLdNAoMGLU8vkGOFmrV8?p=preview

1 个答案:

答案 0 :(得分:1)

确保在null作为值传入时,您的管道不会爆炸。同时返回所有值。管道不会被每个值调用,但会立即调用所有联系人:

@Pipe({name: 'isMember'})
export class IsMemberPipe implements PipeTransform {
    transform(value: any, crit:boolean): any {
      console.log('x');
        console.log('log', value, crit);
        if (value) {
          return value.filter(v => v.isMember === crit) {
        } 

        return [];
    }
}