如何在angular4中获取过滤结果数组的长度?
How to get the length of the filtered resultant array in angular4?
我有一个对象数组,我正尝试使用搜索值过滤这些对象
component ts
filterArray = [
{'id': 1, 'name': 'ABC', 'type': 'IT'},
{'id': 2, 'name': 'XYZ', 'type': 'Tech'},
{'id': 3, 'name': 'LMN', 'type': 'IT'},
{'id': 4, 'name': 'PQR', 'type': 'Software'},
{'id': 5, 'name': 'JKL', 'type': 'hardware'},
{'id': 5, 'name': 'EFG', 'type': 'hardware'}
];
@ViewChildren('filterRef') filtedItems;
custom pipe
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'filter'
})
export class FilterPipe implements PipeTransform {
transform(value: any, args?: any): any {
if (value && args) {
const arr = value.filter((e: any) => e.type.toLowerCase() === args.toLowerCase());
if (arr.length > 0) {
return arr;
} else {
return [];
}
}
return value;
}
}
HTML
Search : <input type="text" name="search" [(ngModel)]="search">
<ul *ngFor="let item of filterArray | filter: search as result" #filterRef>
<li>{{item.name}}</li>
</ul>
Filtered Length : {{filtedItems?.length}}
我正在尝试获取过滤后的结果数组的长度低于错误
谁能帮我解决这个问题?..
如果应该使用管道进行过滤,唯一的可能性是在周围环境中进行过滤:
<ng-container *ngIf="filterArray | filter: search as result">
<ul *ngFor="let item of result" #filterRef>
<li>{{item.name}}</li>
</ul>
<p>{{result?.length}}</p>
</ng-container>
我有一个对象数组,我正尝试使用搜索值过滤这些对象
component ts
filterArray = [
{'id': 1, 'name': 'ABC', 'type': 'IT'},
{'id': 2, 'name': 'XYZ', 'type': 'Tech'},
{'id': 3, 'name': 'LMN', 'type': 'IT'},
{'id': 4, 'name': 'PQR', 'type': 'Software'},
{'id': 5, 'name': 'JKL', 'type': 'hardware'},
{'id': 5, 'name': 'EFG', 'type': 'hardware'}
];
@ViewChildren('filterRef') filtedItems;
custom pipe
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'filter'
})
export class FilterPipe implements PipeTransform {
transform(value: any, args?: any): any {
if (value && args) {
const arr = value.filter((e: any) => e.type.toLowerCase() === args.toLowerCase());
if (arr.length > 0) {
return arr;
} else {
return [];
}
}
return value;
}
}
HTML
Search : <input type="text" name="search" [(ngModel)]="search">
<ul *ngFor="let item of filterArray | filter: search as result" #filterRef>
<li>{{item.name}}</li>
</ul>
Filtered Length : {{filtedItems?.length}}
我正在尝试获取过滤后的结果数组的长度低于错误
谁能帮我解决这个问题?..
如果应该使用管道进行过滤,唯一的可能性是在周围环境中进行过滤:
<ng-container *ngIf="filterArray | filter: search as result">
<ul *ngFor="let item of result" #filterRef>
<li>{{item.name}}</li>
</ul>
<p>{{result?.length}}</p>
</ng-container>