我有一個ngFor
迭代對象數組。我在UI中的表格中顯示這些信息,並且它一切正常。Angular - Filter ngFor對象的數組數組
我想實現一個小過濾器框,所以我可以根據輸入框中的內容縮小結果範圍。
我爲此使用了一個pipe
並且它使用了一組數據,但我不確定如何在沒有指定特定鍵的情況下搜索對象。我希望能夠輸入search term
,並且如果它是任何一個對象中的值,請對其進行過濾。
管:
@Pipe({ name: 'filter' })
export class FilterPipe implements PipeTransform {
public transform(values: any[], filter: string): any[] {
if (!values || !values.length) return [];
if (!filter) return values;
return values.filter(v => v.indexOf(filter) >= 0);
}
}
組件:
dataObj = [
{
name: 'Bob',
age: 21,
location: 'USA'
},
{
name: 'Sally',
age: 25,
location: 'UK'
}]
filterString = '';
HTML:
<div>
<h2>Hello {{name}}</h2>
<input [(ngModel)]="filterString" />
<div *ngFor="let d of (dataObj | filter: filterString)">
{{ d.name }} - {{ d.age }} - {{ d.location }}
</div>
</div>
期望的結果:
如果我輸入了21
或Sally
或US
,我期望看到結果。我試圖避免將一個密鑰硬編碼到我搜索的管道中,因爲我希望該對象內的所有值都是可搜索的。
這裏是一個plnkr例如:https://plnkr.co/edit/ubLyB152hgrPJSVp8xSB?p=preview
我有一個博客帖子這個位置:https://blogs.msmvps.com/ deborahk/filtering-in-angular/ – DeborahK