2017-06-11 14 views
1

私がしようとしているのは、イオン2アプリで行ごとに2列を表示し、ユーザーが検索ボックスにテキストを入力したときですたとえば、2行目にのみ存在するテキストを入力すると、最初の行が消えます(実際には今起こりますが、2列目は右に保持し、隠れていない場所には入れません)。ここで 角度とイオン2:NgForと条件付き表示で1列に2列表示

は、私が同じ行で私の列を取得されていない、今使っているコードです:

<ion-grid> 
    <div [ngSwitch]="top"> 
     <div *ngSwitchCase="'resto'"> 
     <ion-row responsive-sm wrap *ngFor="let data of topRestaurants | ArrayObject "> 
      <ion-col col-6 *ngIf="data.value['title'].toLowerCase().includes(textFilter)"> 
      <ion-card> 
       <ion-col col-12 no-margin no-padding><img src="{{data.value['logo']}}"/></ion-col> 
       <ion-col col-12 no-margin no-padding> 
        <ion-card-content> 
        <ion-card-title> 
         {{data.value['title']}} <ion-badge item-end>{{(data.value['distance']) | number:'1.2-2'}} km</ion-badge> 
        </ion-card-title> 
        <p> 
         <small><rating [score]="data.value['overall_rating']" [max]="5"></rating> ({{data.value['reviews_count']}}) Avis</small> 
        </p> 
        </ion-card-content> 
       </ion-col> 
      </ion-card> 
      </ion-col> 
     </ion-row> 
     </div> 

私が作るときは、次のようなイオン-COLスタイル:表示:インラインブロック、幅:50 %、それはほとんどうまく動作しますが、ngIfがfalseであってもブロックが自分の場所(50%)を保持するようにします(DOMに行が残っているので、代わりにcolを削除します)/:

enter image description here

+0

それから、タイトルに言及しているように、私の全体的な質問を読まなければならないと思います。 –

+0

ええ、多分私は理解しませんが、アイテムは常に2つの列を持つ行にありますか? ion-colourに* ngForがある場合は、1つの行を持ちますが、nの列はあります。しかし、「幅のカウント」列が12を超えるとすぐに新しい行に折れるためです。あなたが今持っている方法では、イオンカラムが垂直に動かないようにします。 – robbannn

+0

解決策を見つけましたか? – robbannn

答えて

1

*ngFor<ion-row>から<ion-col>に移動することができます。あなたが今持っている方法は、<ion-col>が行に留まるので垂直方向に動かないようにします。 *ngForを移動した場合は、は、のうち1つのみを<ion-col>とします。列の幅が6(col-6)の場合、列の幅が12を超えると新しい行に折れるので、行には2つの列しかありません。 *ngIfのためにアイテムの1つが削除されると、レイアウトが自動的に調整されます。 *ngFor -statementを動かす出てくる

一つの問題は、あなたがホスト要素(structural directive docs)上の複数の構造・ディレクティブ(* ngIf、* ngFor)を持つことができないので、*ngIfを移動する必要がありますということです。

+0

それが問題です。トリガーされた時は、カードだけを取り除くことはないので、次のコラムにその場所を残す代わりに空白を残します。 –

+0

素晴らしい!だからあなたはあなたがする必要があることを知っている! :) – robbannn

+0

フランク・ノーであることは、それが質問の目的でした:D –

0

* ngForを列に移動して、アクチュエーターを操作しますlの配列ではなく、特定の 'データ'が表示されないように* ngIfを投げるだけです。

私はまた、あなたのようにngIfにフィルタをバインドすることは効率的ではないと思います。