我开始将Angular材质与cloud-firestore一起使用,并且数据源和表的数据源存在以下问题。问题是,到firestore的查询返回的对象带有索引,而MatTableDataSource需要一个数组,而我无法将返回查询的对象转换为数组。 我曾尝试使用循环和.map运算符来填充一个空数组,但我总是创建带有索引的对象数组,而不是简单的对象数组。
这是我的数据库:
我的服务:
findpagosCliente(pagosId: number[]) {
const col = this.afs.collection<Cliente>('pagoscliente')
const queries = pagosId.map(el => col.doc(el.toString()).valueChanges());
return combineLatest(...queries);
}
我的组件
inicializarTablaPagos() {
this.clienteService.findpagosCliente(this.clienteSeleccionado.facturacion.pagos).subscribe((pagos) => {
this.dataSource = new MatTableDataSource(pagos);
this.dataSource.paginator = this.paginator;
this.showClientData = true;
})
}
MatTableDataSource等待一个数组,但是angularfire2查询将我和对象发送回去,如下所示: object from firestore
我已经尝试了很多循环和运算符来尝试创建一个新的简单数组,但是最终它们都生成了一个新数组,就像上一张图中的那样。例如:
this.clienteService.findpagosCliente(this.clienteSeleccionado.facturacion.pagos)
.subscribe((pagos) => {
let arraytemp = [];
pagos.map(element => {
arraytemp.push(element)
})
this.dataSource = new MatTableDataSource(arraytemp);
this.dataSource.paginator = this.paginator;
this.showClientData = true;
})
我知道我做错了,这很明显,但是现在我看不到。
谢谢您的回答
答案 0 :(得分:0)
您得到的结果已经是一个数组。只需查看图像中的符号即可:[{...}, {...}]
方括号始终是数组的指示符。