Angular 2 * ngFor项目在循环外计数

时间:2017-12-28 10:00:57

标签: angular count ngfor

我是棱角分明的新手,我有一个愚蠢的问题,如何在* ngFor循环外显示实际的项目数?

我正在使用像这样的过滤器和分页管道

*ngFor="let item of items| filterBy: ['name','category']: queryString | paginate: config; let i = index; let c = count"

我知道有一个变量' count'但是当然它只在那个循环中可用,我如何在组件中获得这个变量,我是否需要创建新的组件,将它放在那个循环中并传递' count'通过指令还是有一些更简单,更清洁的方式?

1 个答案:

答案 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

希望它有所帮助。