我需要通過更改下拉列表中的類別來過濾ngFor
循環內的項目。因此,當從列表中選擇特定類別時,應只列出包含該類別的項目。如何根據對象屬性過濾「ngFor」循環內的項目字符串
HTML模板:
<select>
<option *ngFor="let model of models">{{model.category}}</option>
</select>
<ul class="models">
<li *ngFor="let model of models" (click)="gotoDetail(model)">
<img [src]="model.image"/>
{{model.name}},{{model.category}}
</li>
</ul>
項目數組:
export var MODELS: Model[] = [
{ id: 1,
name: 'Model 1',
image: 'img1',
category: 'Cat1',
},
{ id: 2,
name: 'Model 2',
image: 'img2',
category: 'Cat3',
},
{ id: 3,
name: 'Model 3',
image: 'img3',
category: 'Cat1',
},
{ id: 4,
name: 'Model 4',
image: 'img4',
category: 'Cat4',
},
...
];
而且,在下拉列表中包含重複的類別名稱。它只需要列出唯一的類別(字符串)。
我知道創建一個自定義管道是正確的方式來做到這一點,但我不知道如何寫一個。
Plunker:http://plnkr.co/edit/tpl:2GZg5pLaPWKrsD2JRted?p=preview
爲什麼不在組件代碼中進行過濾* '* ngFor =「let model of filteredModels」'並且寫'get filteredModels(){...}'來提供它。你可以做同樣的事情來爲'select'元素提供一個唯一的條目數組。 – jonrsharpe
*「我知道創建一個自定義管道將是正確的方式來做到這一點」 - 是什麼讓你得出這個結論? *「但我不知道如何寫一個」* - 那麼你有沒有考慮*學習?* – jonrsharpe
當然jonrsharpe :)。我是新手,希望我能找到正確的方法。我讀了很多關於過濾角2的帖子,自定義管道主要被稱爲正確的選擇。 – gundra