2017-07-07 13 views
0

我有一个问题。我有一个城市列表,但是当我使用搜索栏时,我只想让同名的城市出现。如何过滤Ionic 2上的对象名称?

目前,我想要这个:

<ion-searchbar 
     [(ngModel)]="selectedCity" 
     [showCancelButton]="shouldShowCancel" 
     (ionCancel)="onCancel($event)"> 
    </ion-searchbar> 

    <ion-item *ngFor="let city of cities | orderBy: name | filter: selectedCity"> 
      <ion-label>{{city.name}}</ion-label> 
    <button (click)="onActive(city.detalhe.id)" *ngIf="city.active" ion-button outline item-right>Desativar</button> 
    <button (click)="onActive(city.detalhe.id)" *ngIf="!city.active" ion-button outline item-right>Ativar</button> 
     </ion-item> 

但我知道它永远不会工作“,因为我送的对象城市管道‘过滤器’,而不是名字,我怎么可以只发送管道的名称?我需要方法的对象 'onActive'

管道:

@Pipe({ 
name: "filter", 
pure: false 
}) 

export class FilterArrayPipe implements PipeTransform { 

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

而 'selectedCity' 是一个字符串。当我用其他字符串尝试管道时,它工作。还有一点,我需要过滤比较对象的名称,但在此之后我需要整个对象。

回答

1

好吧,看起来你需要发送2 parameters到过滤器。第一个是文字'名称',第二个选定城市在* ngFor中加上< ion-item >。 然后,你可以通过项目[现场]过滤== selectedCity - where字段将包含“名称”

我想你已经从here

得到了排序依据实例你没看到下面的评论中通过示例链接也是如此...避免使用管道进行orderby ..在组件中执行。我会在组件级别上亲自解决这两个问题。

+0

你可以编辑管道吗?我不知道如何去做。 –

+0

使用VSCode之类的IDE https://code.visualstudio.com/ – JGFMK