2017-07-13 14 views
0

私はこのようなngFor構造ディレクティブを使用して、私のHTMLテンプレートにオブジェクトの配列を結合しています:angular4 HTMLテンプレートの反復とngIfディレクティブ

<div *ngFor=let g of groupsList"> 

グラムによって参照される各グループは型と呼ばれるプロパティが含まれています。 groupsListの要素は、すでに型別にソートされています。要素0-10の意味オブジェクトはTypeAを持ち、要素11-35はTypeBなどである必要があります。ただし、各オブジェクトのオブジェクトとオブジェクトの数は動的です。

各オブジェクトのタイプをそれ以前のオブジェクトと比較し、その2つの値が異なるかどうかに応じて、上に表示されている別のdivを表示または非表示にする必要があります。

ngForディレクティブのためテンプレートにgroupsListの繰り返しが発生します。私は、私のコンポーネントではなく、テンプレート内でこの比較を行う必要があると私は仮定しています。

いくつかのng-containersを作成し、コンポーネントの2つの変数にpriorTypeとcurrentTypeのような名前を付けてバインドするには、これを行う正しい方法はありますか?短いソリューションで更新

<div *ngFor="let g of groupsList; let i=index"> 
<div *ngIf="(i==0) || (i>0 && g.type != groupsList[i-1].type)"> 
+0

「各オブジェクトの型を前のオブジェクトと比較する」とは、g [index -1]の直前のものを意味するか、または現在のオブジェクトの前にあるすべてのものを意味しますか? – Nehal

+0

@Nehalちょうどその直前に来たもの – HendPro12

答えて

2

ここでは、それは前のオブジェクトだとオブジェクトを比較し、比較に基づいてdiv異なるを示すことができるサンプルHTMLです。

<div *ngFor="let g of groupsList; let i = index"> 
    <div *ngIf="i == 0"> 
     {{ g | json }} 
    </div> 
    <div *ngIf="i > 0 "> 
     {{ g | json }} 
     <h4 *ngIf="(groupsList[i].type != groupsList[i-1].type)" style="background: green">Type doesn't match with previous</h4> 
     <h4 *ngIf="(groupsList[i].type == groupsList[i-1].type)" style="background: red">Type matches with previous</h4> 
    </div> 
</div> 

demo

この情報がお役に立てば幸い!

+1

ありがとう。私は自分自身で解決策を見つけ出して、あなたがあなたに答えたときに回答を投稿しようとしていました。 Iveはあなたのものを同じものとして正しいものとしてマークしました。 – HendPro12

関連する問題