Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular Ag网格和异步管道导致加载覆盖问题_Angular_Ag Grid - Fatal编程技术网

Angular Ag网格和异步管道导致加载覆盖问题

Angular Ag网格和异步管道导致加载覆盖问题,angular,ag-grid,Angular,Ag Grid,荷载叠加在初始荷载时适用 HTML <ag-grid-angular #agGrid style="width: 100%; height: 550px;" class="ag-theme-balham" [gridOptions]="gridOptions" [rowData]="filteredTasks$ | async" (selectionChanged)="onSelectionChanged()" (rowClicked)="onR

荷载叠加在初始荷载时适用

HTML

  <ag-grid-angular #agGrid style="width: 100%; height: 550px;" 
    class="ag-theme-balham" [gridOptions]="gridOptions" 
    [rowData]="filteredTasks$ | async" 
    (selectionChanged)="onSelectionChanged()" 
    (rowClicked)="onRowClicked($event)">
  </ag-grid-angular>
第一个调试器命中,并显示以前的数据

第二个调试器命中,ag网格为空,不显示任何行

第三个调试器命中,但仍不显示任何行(即使数据源现在已通过异步管道设置为可观察)

第四个调试器命中,不显示任何覆盖

第五次调试器点击,最后显示“加载”,但立即被“无需显示行”替换

发生了什么事?我做错了什么

第五次调试器点击,最后显示“加载”,但立即被“无需显示行”替换

您的调试流程是正确的,因为在此步骤上显示了“无需显示的行”
loadNewData
rows$
具有新的观察者绑定,但它不应该

一旦您设置了数据(在初始化阶段)它就完成了,之后-所有对网格的操作都应该通过
gridApi

在您的情况下,
loadNewData
应该这样做:

loadNewData() {
    this.showOverlay();
    let request = of(this.rowData2).pipe(
      delay(5000)
    )
    request.subscribe(result=>{
      this.hideOverlay();
      this.gridOptions.api.setRowData(result)
    })
}

你能为测试准备一个代码样本库吗?是的,今天下午我可以得到一个工作代码样本。@un.spike这说明了问题所在,所以这使得异步管道在第一种情况下非常无用,因为现在我不得不手动取消订阅第二组数据。
    1st debugger;
    this.gridApi.setRowData([]);
    2nd debugger;
    this.filteredTasks$ = this.taskService.getFilteredTasks(httpParams);
    3rd debugger;
    this.gridOptions.api.hideOverlay();
    4th debugger;
    this.gridOptions.api.showLoadingOverlay();
    5th debugger;
loadNewData() {
    this.showOverlay();
    let request = of(this.rowData2).pipe(
      delay(5000)
    )
    request.subscribe(result=>{
      this.hideOverlay();
      this.gridOptions.api.setRowData(result)
    })
}