2017-07-07 7 views
0

問題があります。私は都市のリストを持っていますが、私が検索バーを使うときは、同じ名前の都市を表示したいだけです。イオン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をフィルタに送信する必要があるようです。最初の文字は「名前」で、第2の選択された都市は、<イオンアイテム>の* ngForで引用されていません。 そして、あなたがアイテム[フィールド]でフィルタでき== selectedCity! - フィールドは

を「名前」を含んでいるでしょう、私はあなたがあなたが以下のコメントを参照してくださいましたhere

からORDERBY例を持ってそれを取りますサンプルリンクでも注文する... orderbyのためにパイプを使用しないでください。コンポーネントで行います。私は個人的にコンポーネントレベルで両方を行うことに取り組んでいます。

+0

パイプを編集できますか?私はそれを行う方法がわかりません。 –

+0

VSCodeのようなIDEを使用するhttps://code.visualstudio.com/ – JGFMK

関連する問題