我已经在我的控制器中使用来自firestore中'expenses'集合的数据填充了一个可观察数组/ MatTableDataSource,我希望能够在此使用angular material 2分页方法,但无法在线查找任何文档/教程这表明如何做到这一点 .
我的控制器目前设置如下,但分页尝试不起作用:
import { Component, OnInit, AfterViewInit, ViewChild } from '@angular/core';
import { MatPaginator, MatTableDataSource, MatSort } from '@angular/material';
import { Observable } from 'rxjs/Observable';
import { AngularFireDatabase } from 'angularfire2/database';
import { AngularFirestore, AngularFirestoreCollection } from 'angularfire2/firestore';
import { Expense } from '../expenseModel';
@Component({
selector: 'app-expense-list',
templateUrl: './expense-list.component.html',
styleUrls: ['./expense-list.component.scss']
})
export class ExpenseListComponent implements OnInit, AfterViewInit {
// tableColumns = [ 'id', 'reference', 'date', 'description', 'category', 'type', 'nominal', 'value', 'taxCode', 'tax', 'total' ];
tableColumns = [ 'id' ];
@ViewChild(MatPaginator) paginator: MatPaginator;
@ViewChild(MatSort) sort: MatSort;
expenses = new MatTableDataSource(this.expenses);
constructor(private db: AngularFirestore) {
this.expenses = this.db.collection('/expenses', ref => ref.orderBy('id')).valueChanges();
}
ngOnInit() {
}
ngAfterViewInit() {
this.expenses.paginator = this.paginator;
}
viewExpense(row) {
console.log('viewExpense(' + row.id + '): ', row);
}
}
2 回答
因为我很好奇,我会很快将一个示例stackblitz放在一起,并在完成后在这里发布 . 以下是我的“方法”......
在我的html中,添加分页,如:
在我的组件中,添加分页事件以获取数据页面,例如:
更新:我一直在通过Angular Firestore实现分页解决方案的研究引导我Simple Pagination With AngularFire2
我有一个类似的问题,并解决了将所有内容放在ngOnInit方法中
component.ts
template.html