Проблема в том, что значение $key
не определено. Когда вы делаете datum.payload.toJSON()
, вы теряете $key
Вместо этого вы можете использовать:
ngOnInit() {
this.invoiceService.getInvoices().snapshotChanges()
.map(data => data.map(datum => {
let purchases = datum.payload.toJSON()['purchases'];
return {
...datum.payload.toJSON() as IInvoice,
$key: datum.key,
purchases: Object.keys(purchases).map(key => purchases[key])
}
}))
.subscribe(data => this.invoiceList = data);
}
Используя ...datum.payload.toJSON()
, мы можем скопировать все значения из этого объекта, и в строке ниже мы также можем добавить $key
. Наконец, строка ниже, которая преобразует purchases
из объекта в массив.
Вот демонстрация StackBlitz