Вам нужно перебрать ваши данные и создать массив объектов. Но я могу представить себе использование асинхронной трубы. Ну, вы можете использовать карту поверх наблюдаемого для преобразования данных, но я немного ленивый
Допустим, у вас есть такие данные, как:
data=[{day:1,name:"one",value:100},
{day:1,name:"two",value:200},
{day:2,name:"three",value:300},
{day:1,name:"four",value:400},
{day:3,name:"five",value:500},
{day:2,name:"six",value:600}
]
Вы можете сделать что-то вроде
array:any[]=[{}]
this.data.forEach(x=>{
let row=0;
while (this.array[row]["day"+x.day])
{
row++
if (!this.array[row])
this.array[row]={}
}
this.array[row]["day"+x.day]=x
})
И создайте таблицу как
<table>
<th *ngFor="let keyPair of array[0]|keyvalue">{{keyPair.key}}</th>
<tr *ngFor="let item of array;let i=index">
<td *ngFor="let keyPair of array[0]|keyvalue">
{{item[keyPair.key]?.value}}
</td>
</tr>
</table>
См. stackblitz