2016-11-21 71 views
2

我有一個包含2列的列表,我希望左邊顯示偶數和奇數。Angular 2 ngFor對偶數/奇數的項目

目前我遍歷每列的整個列表,並用ngIf =「odd」或甚至過濾。

我可以讓ngFor只能做和觀看偶數或奇數指數嗎?

會大大提高性能嗎?我不知道當一半的DOM元素被納入時是多少負擔。

該列表不會頻繁更改,但當它發生更改時,它會完全更改。

+1

快,讓所有您所使用的代碼。很可能你需要重新映射迭代數組。 – estus

回答

3

您可以創建一個管道,只有返回oddeven項目

@Pipe({ name: 'evenodd' }) 
export class EvenOddPipe implements PipeTransform { 
    transform(value:any[], filter:string) { 
    if(!value || (filter !== 'even' && filter !== 'odd')) { 
     return value; 
    } 
    return value.filter((item, idx) => filter === 'even' ? idx % 2 === 1 : idx % 2 === 0); 
    } 
} 

,並使用它像

<div *ngFor="let item of items | evenodd:'even'"></div>  
<div *ngFor="let item of items | evenodd:'odd'"></div> 
+0

幾個錯誤'':'預計。 '和'找不到名字'item'.' – Toolkit

+0

感謝您的提示。我更新了我的答案。我認爲它現在應該工作。如果仍然出現錯誤,請提供更多詳細信息(錯誤的位置和確切的錯誤信息)。 –

+0

謝謝你的管道真的很好的例子!我不得不按照以下步驟改變它,讓它在Angular 4中運行:'return value.filter((item,idx)=> {return filter ==='even'?idx%2 === 1:idx %2 === 0;});' –