【发布时间】:2020-05-13 17:17:33
【问题描述】:
我有一张包含大量数据的表格。我会通过异步请求逐行从服务器获取这些数据。在每次回复时,我都会在表格中填满新行。通过这种方式,用户应该能够一步一步地看到表格填充,而不是一次。请求是按名称和日期的。所以,这是我到目前为止所做的一个例子:
dataObj$: Observable<{}>;
this.allDates.forEach(date => {
let timeStamp = moment(date).valueOf();
this.dataObj$ = this.service.getData(userName, timeStamp);
});
这是结果:
{"date":1593900000000,"done":12,"progress":30}
这是桌子
<table>
<tr>
<th>
</th>
<th scope="col">
Done
</th>
<th>
Progress
</th>
</tr>
<tr>
<th scope="row">{{(dataObj$ | async)?.date | date: 'dd/MM/yyyy'}}</th>
<td>{{(dataObj$ | async)?.done}}</td>
<td>{{(dataObj$ | async)?.progress}}</td>
</tr>
</table>
通过这种方式,我有一个表格,第一列中包含所有日期,完成和进度标签作为标题,其他数据填充表格的其余部分。类似的东西
Done Progress
data1 1 1
data2 2 2
data3 3 3
但实际上它不是这样工作的。现在表格只显示最后一行。我想要的不一样。它应该告诉我,一旦请求完成,它就会逐行创建。这里有什么问题?
【问题讨论】:
-
你不应该使用循环来渲染表格吗?
ngFor具体 -
@Kenny 在这种情况下我可以循环什么?我的意思是,响应是单个对象而不是数组。你知道我怎样才能得到我想要的结果吗?当然也可以使用 ngFor
-
@End.Game 您希望请求并行还是顺序触发?
-
可能是顺序的。并行可能是一个问题,因为有很多触发请求。我认为这是最好的方法。但如果你有建议,我很高兴听到你的声音
-
@End.Game 最好的方法是获取所有数据:) 或日期范围并使用分页。但我可以给你一个连续行的答案
标签: angular typescript asynchronous html-table