Angular 用Ag网格中的另一个可观测响应改变可观测响应
我有一个可观察的,从服务器上得到所有盒子的东西。每个框都有一个属性(lastUpdateBy),我想将其从userservice更改为全名。问题是,Ag网格总是很快显示结果,然后数据就会改变。刷新网格后,数据将正确显示。你知道这里有什么问题吗?谢谢Angular 用Ag网格中的另一个可观测响应改变可观测响应,angular,typescript,rxjs,observable,ag-grid,Angular,Typescript,Rxjs,Observable,Ag Grid,我有一个可观察的,从服务器上得到所有盒子的东西。每个框都有一个属性(lastUpdateBy),我想将其从userservice更改为全名。问题是,Ag网格总是很快显示结果,然后数据就会改变。刷新网格后,数据将正确显示。你知道这里有什么问题吗?谢谢 getAllBox() { this.BoxesService.getAllBoxes().subscribe(responseData => { responseData.Boxes.map(item => {
getAllBox() {
this.BoxesService.getAllBoxes().subscribe(responseData => {
responseData.Boxes.map(item => {
this.userService
.getUserName(item.lastUpdatedBy)
.subscribe(fullName => {
item.lastUpdatedBy = fullName
})
})
this.agGridData = responseData.boxes
})
}
如果不允许只进行一次WEB API调用,则可以检查数组中是否有其他项,如果数组中没有项,则只显示网格: HTML:
您正在对
map
函数中的responseData.box
的每个项进行API调用。可以吗?尝试在一次API调用中获取所有必要的信息。是的,没问题。您是否能够进行一次API调用以获取所有必要的信息?我建议您使用RxJS操作符,如mergemap,而不是嵌套订阅。下面是一个如何实现的示例()
<ag-grid-angular
*ngIf="showData"
style="width: 500px; height: 500px;"
class="ag-theme-balham"
[rowData]="yourRows"
[columnDefs]="yourColumns"
>
</ag-grid-angular>
showData: Boolean = false;
getAllBox() {
this.BoxesService.getAllBoxes().subscribe(responseData => {
let boxMaxIndex = responseData.Boxes.length - 1;
responseData.Boxes.map((item, index) => {
this.userService
.getUserName(item.lastUpdatedBy)
.subscribe(fullName => {
item.lastUpdatedBy = fullName
if (boxMaxIndex === index)
this.showData = true;
})
})
this.agGridData = responseData.boxes
})
}