2017-04-05 5 views
2

今は、ngIfを使用してアイテムIDが1で、スタイルが変更されていますが、2番目のステートメントがアイテムIDが1以外のすべてのオブジェクトに対して実行されています。私はなぜそれが起こっているのか理解していますが、1のItem Idが配列内のオブジェクトに存在しない場合、2番目のステートメントを実行するだけの方法がありますか?おかげでバンチngIf変数が存在するかどうかチェックする

<div *ngFor="let item of items">  
    <div *ngIf="(item.details.id == 1)"> 
     Do Somthing 
    </div> 

    <div *ngIf="(item.details.id != 1)"> 
     Do Somthing 
    </div> 
    </div> 
+0

はまたあなたのJSONを更新します – Aravind

答えて

0

あなたは、コンポーネントのコードで

<div *ngFor="let item of items">  
    <div *ngIf="(item.details.id === 1)"> 
     Do Somthing 
    </div> 

    <div *ngIf="!(item.details.id === 1)"> 
     Do Somthing 
    </div> 
    </div> 
+1

OPの意味は? 'items'内の要素の1つが' details.id = 1'を含んでいなければ、2番目のifを実行しません。 – echonax

2

以下のように厳しい事業者と比較する必要があります:テンプレートで

// private oneExists: boolean = false; 
this.oneExists = this.items.filter(item => item.details.id === 1).length > 0; 

<div *ngFor="let item of items">  
    <div *ngIf="item.details.id === 1"> 
    Do Something 
    </div> 

    <div *ngIf="! oneExists"> 
    Do Something 
    </div> 
</div> 
+0

Itemsは別の配列の中にありますので、 'let item of product.items'のようになります。コンストラクタ内の項目にフィルタを使ってアクセスする際に少し問題があります。製品を知っている製品アレイの子供も。 – DN0300

+0

おそらくコンストラクタでそれらにアクセスすべきではありません。どこに 'this.product.items'が初期化されていますか?私は 'ngOnInit'と呼ばれる約束の中にいると思います。もしそうなら、そこに私のフィルタリングコードを移動してください。別の場所にいる場合は、そのコード_right after_ 'this.product.items'の初期化を移動してください。そして、最初のどこかで 'private oneExists:boolean = false; 'と宣言します。 – gsc

関連する問題