Angular 2 pipe -data没有传递给transform方法

时间:2017-04-11 16:03:03

标签: javascript html angular typescript

我正在尝试实现一个非常简单的管道,它从* ngFor获取数据,然后进行一些操作,但是当我在做data.filter()时它抛出一个错误"无法读取未定义的属性过滤器&#34 ;

这是我的管道

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

@Pipe({ name: 'tripFilterByStartDate',pure: false  })
export class tripFilterByStartDateModule implements PipeTransform {
transform(values: any, args: any[] = null) {
    console.log(values);//
    return values.filter(value => value.someValue);// throwing an error "cannot read property filter of undefined" 
  }
}

,这是我的HTML页面

 <ion-card *ngFor="let tripData of tripList | tripFilterByStartDate" text-wrap>

 </ion-card>

任何建议都会有很大的帮助

1 个答案:

答案 0 :(得分:0)

cannot read property filter of undefined错误明确指出当您的管道在初始更改检测时被调用时,您的values对象不存在(未定义)。 From Pipe filter方法已应用于values变量。由于tripList没有从服务器检索到列表,因此它失败了(每个impure也会调用tick管道。)

所以你应该在过滤器本身处理这种情况。

@Pipe({ name: 'tripFilterByStartDate',pure: false  })
export class tripFilterByStartDateModule implements PipeTransform {
transform(values: any, args: any[] = null) {
    if(!values) return []; //added this line
    return values.filter(value => value.someValue);// throwing an error "cannot read property filter of undefined" 
  }
}