2017-04-11 57 views
0

我想实现一个非常简单的管道,它从* ngFor获取数据,然后执行一些操作,但是当我在执行data.filter()时,它会抛出一个错误“看不懂的undfined属性过滤器”角2管道数据没有传递到变换方法

这里是我管

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> 

任何建议将是很大的帮助

回答

0

cannot read property filter of undefined错误明确表示,你values对象不存在(未定义)当你管接到电话初始变化检测。来自管道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" 
    } 
} 
+0

感谢pankaj,它现在工作的很好。 – Abhijeet