Angular material 无法读取属性';长度';使用MatPaginator时为null
我不断发现这个错误:Angular material 无法读取属性';长度';使用MatPaginator时为null,angular-material,Angular Material,我不断发现这个错误: core.js:1542 ERROR TypeError: Cannot read property 'length' of null at MatTableDataSource.push../node_modules/@angular/material/esm5/table.es5.js.MatTableDataSource._filterData (table.es5.js:702) at MapSubscriber.project (table.es5.js:657)
core.js:1542 ERROR TypeError: Cannot read property 'length' of null
at MatTableDataSource.push../node_modules/@angular/material/esm5/table.es5.js.MatTableDataSource._filterData (table.es5.js:702)
at MapSubscriber.project (table.es5.js:657)
at MapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/map.js.MapSubscriber._next (map.js:35)
at MapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.next (Subscriber.js:54)
at CombineLatestSubscriber.push../node_modules/rxjs/_esm5/internal/observable/combineLatest.js.CombineLatestSubscriber.notifyNext (combineLatest.js:83)
at InnerSubscriber.push../node_modules/rxjs/_esm5/internal/InnerSubscriber.js.InnerSubscriber._next (InnerSubscriber.js:15)
at InnerSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.next (Subscriber.js:54)
at BehaviorSubject.push../node_modules/rxjs/_esm5/internal/BehaviorSubject.js.BehaviorSubject._subscribe (BehaviorSubject.js:22)
at BehaviorSubject.push../node_modules/rxjs/_esm5/internal/Observable.js.Observable._trySubscribe (Observable.js:42)
at BehaviorSubject.push../node_modules/rxjs/_esm5/internal/Subject.js.Subject._trySubscribe (Subject.js:89)
我从数据库中获取的服务获取数据。它的功能很好。我的意思是功能是正确的。我可以进行分页,只是我在检查器中发现了这个错误。请参阅下面我的代码:
ngOnInit() {
if (this.genParams.buildingId === null || this.genParams.buildingId === undefined) {
this.router.navigate(['/main/viewproperties']);
}
this.buildingId = this.genParams.buildingId;
this.getUnits();
}
public getUnits() {
this.isLoading = true;
this.unitService.newGetUnits(this.buildingId)
.subscribe((data: any) => {
this.ELEMENT_DATA = data;
this.dataSource = new MatTableDataSource(this.ELEMENT_DATA);
this.dataSource.paginator = this.paginator;
this.isLoading = false;
console.log(this.ELEMENT_DATA);
}, err => {
console.log(err);
});
}
这是在我的html中:
<mat-paginator [pageSizeOptions]="[1, 5, 10, 20]" showFirstLastButtons></mat-paginator>
非常感谢您的帮助。我怀疑这是一个范围问题。尝试将其添加到类中,而不是函数中。您引用this.datasource,但在函数中将其设置为new,因此我假设您只是在类中声明var。我已经多次看到这个错误,它发生在我的数据源没有接收数据,但您似乎表示您的表正在使用数据运行时
你能到stackblitz.com复制一个工作示例,这样我可以进一步查看你的代码吗?我可能有一个轻微的想法,为什么会发生这种情况,但样品更好。
// For data table operations.
private dataSource = new MatTableDataSource();
private dataLength: number;