管道过滤器上的离子2错误(TypeError:无法读取属性'过滤器'未定义)

时间:2017-02-09 06:33:36

标签: angular ionic2

你好我正在使用ionic 2( version released 2.0)angular 2( version core 2.2.1)试图制作一个数组管道过滤器,但它始终显示错误 无法阅读财产'过滤'未定义的

import { Pipe ,PipeTransform } from '@angular/core';
 @Pipe({ name: 'fetch', pure: false }) 
export class Search implements PipeTransform { 

 transform(items:Array, conditions:{[field:string]:any}):Array { 
   return items.filter(item => { for (let field in conditions) { 
       if (item[field] !== conditions[field]) { 
         return false; 
       } 
      } 
      return true; 
   }); 
 } 
}

HTML



`<ion-content>
<ion-searchbar [(ngModel)]="term" [showCancelButton]="true"></ion-searchbar> 
      <ion-grid class="category">
      <ion-row text-center wrap>
        <ion-col width-33 *ngFor="let d of total|fetch:term">
<p> {{d.name}} </p>
      </ion-col>
    </ion-row>
  </ion-grid>
</ion-content>`

JSON responce code in total array [{id:1 ,name:"abc" },{id:2 ,name:"xyz" }]
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

尝试猜测,因为您的代码尚未完成。

您是否使用http请求获取数据?因为在这种情况下,您必须首先以这种方式检查项目:

 if (items==null) {
        return null;
    }

完整的代码:

transform(items: Array<any>, conditions: {[field: string]: any}): Array<any> {
    if (items==null) {
        return null;
    }

    return items.filter(item => {
        for (let field in conditions) {

            if (item[field] !== conditions[field]) {
                return false;
            }
        }
        return true;
    });
}

然后在html部分,如果你试图过滤{{d.name}},根据你的管道,我认为你必须写这样的东西:

*ngFor="let d of total|fetch:{name:term}"

希望这个帮助