【发布时间】:2017-12-10 21:50:55
【问题描述】:
我在 Angular2 中有一个简单的自定义管道,用于根据类型 ID 和年份数组过滤数组,我将其定义为:
@Pipe({name: 'highlightedWorksFilter', pure: false})
export class HighlightedWorksFilterPipe implements PipeTransform {
transform(works: IHighlightedWork[], activityTypeIds: any[], activityYears: any[]){
if (works && works.length) {
return works.filter(work => {
if(activityTypeIds.findIndex(i => i.id === work.activityTypeId && i.checked) === -1) {
return false;
}
if (activityYears.findIndex(i => i.year === work.activityYear && i.checked) === -1) {
return false;
}
return true;
});
}
else {
return works;
}
}
}
这是从调用组件中使用它的地方:
<div>FILTERED COUNT / {{highlightedWorks.length}}</div>
<div *ngFor="let work of highlightedWorks | highlightedWorksFilter: myActivityTypeIds:myActivityYears">
{{work.Title}}
</div>
过滤器工作完美,并根据类型和年份的 2 个复选框列表数组进行更新(使用数组进行过滤,因此管道上的“纯:假”)。
我的问题是,如何在 ngFor 之外获取 FILTERED COUNT 以显示管道的过滤结果计数?我将突出显示的Works.length 作为结果总数,但还想显示我目前使用管道过滤了多少结果。
【问题讨论】:
-
我希望这能回答你的问题stackoverflow.com/questions/35127257/…
-
@Jonnysai 我已经尝试过这种方法,但 {{filteredItems?.length}} 似乎只在进行另一次更改后才更新到下一个值。它似乎落后了一步。
标签: javascript angular typescript