Angular 将datasource设置为新的MatTable数据源7
当我将数据源设置为数组,并尝试将Angular 将datasource设置为新的MatTable数据源7,angular,datasource,mat-table,Angular,Datasource,Mat Table,当我将数据源设置为数组,并尝试将dataSource设置为新的mat表dataSource以能够使用过滤时,我会得到错误: 类型“MatTableDataSource”缺少类型“TableRecord[]”中的以下属性:长度、pop、push、concat等 但是,如果我将数据源设置为任意值,它就可以正常工作。有人能帮我理解为什么: 服务.ts export interface PaginatedListResponse<TableRecord>{ length: number,
dataSource
设置为新的mat表dataSource
以能够使用过滤时,我会得到错误:
类型“MatTableDataSource”缺少类型“TableRecord[]”中的以下属性:长度、pop、push、concat等
但是,如果我将数据源设置为任意值,它就可以正常工作。有人能帮我理解为什么:
服务.ts
export interface PaginatedListResponse<TableRecord>{
length: number,
tableRows: Array<TableRecord>
}
export interface TableRecord{
x: string,
y: string,
z: boolean,
}
dataSource: TableRecord[] = [];
this.dataSource = new MatTableDataSource(response.tableRows);
//errror: Type 'MatTableDataSource<TableRecord>' is missing the following properties from type 'TableRecord[]': length, pop, push, concat, and 24 more.
数据源的声明错误。这样做:
dataSource: MatTableDataSource<TableRecord> = new MatTableDataSource([]) ;
您将数据源声明为
TableRecord[]
然后立即将其切换为类型MatTableDataSource
,因为数据来自具有分页功能的后端。所以我使用的是ObservableAttattable,需要MatTableDataSource类型的对象或简单数组。最初,您定义了TableRecord类型的数组,但尝试将该数组用作MatTableDataSource。我的更改将其定义为MatTableDataSource。MatTableDataSource的属性之一是“data”,它是您定义的类型的数组“数据”总是一个数组,这就是为什么在数据源的键入中省略[]。您不必立即定义“new MatTableDataSource([]),仅当您希望在.data中为其分配空数组,而不是未定义整个对象时,才需要这样做。
dataSource: MatTableDataSource<TableRecord> = new MatTableDataSource([]) ;
this.dataSource.data = response.tableRows;