我是棱角分明的新手,我有一个愚蠢的问题,如何在* ngFor循环外显示实际的项目数?
我正在使用像这样的过滤器和分页管道
*ngFor="let item of items| filterBy: ['name','category']: queryString | paginate: config; let i = index; let c = count"
我知道有一个变量' count'但是当然它只在那个循环中可用,我如何在组件中获得这个变量,我是否需要创建新的组件,将它放在那个循环中并传递' count'通过指令还是有一些更简单,更清洁的方式?
答案 0 :(得分:2)
使用RxJS主题为我工作。
在组件中创建一个变量来保存计数,即a 12345678910
as 12345678910
asd 12345678910
asdf 12345678910
asdfg 12345678910
并为类型filterCount
创建一个RxJS Subject
。
让number
取消订阅subscription
Observable
OnDestroy
订阅filterCount = 0;
filteredCountSubject = new Subject<number>();
subscription: Subscription;
生命周期挂钩上的filteredCountSubject
。
OnInit
在模板中,您可以在模板中的任何位置使用ngOnInit(): void {
this.subscription = this.filteredCountSubject.subscribe((count) => {
this.filterCount = count;
});
}
显示计数。使用
filterCount
并将<div>{{filterCount}}</div>
作为参数发送到filteredCountSubject
管道。
filterBy
在<div *ngFor="let item of items| filterBy: ['name','category']: queryString: filteredCountSubject | paginate: config; let i = index; let c = count"></div>
管道的transform
方法中,使用已过滤数组的计数执行filterBy
。即。
filteredCountSubject.next
希望它有所帮助。