需要在服务调用 RXJS 之前添加一些条件

Need to add some conditions before service get called RXJS

我是 Angular 的新手,我正在使用 primeng Datatable 在我的应用程序中显示网格,现在我也为网格集成了分页功能,我需要向当用户搜索或点击页码时网格。 下面,serviceloading 在方法开始时设置为 true,但在特定实例中未调用服务,这使得始终显示加载,实际上我仅在收到响应时才隐藏加载。那么有什么方法可以让我在 API 调用开始时将 loading 设置为 true ,这样我就可以在收到响应后隐藏起来。

提前致谢

private TransactionSearch: Subject<void> = new Subject();
loadTerritories(event:LazyLoadEvent)
{
    this.serviceloading = true;
    this.params = event.filters.TerritoryName;
    this.TransactionSearch.next();     
    this.TransactionSearch.pipe(
      distinctUntilChanged(),
      debounceTime(1000),
      switchMap(() => { 
            return this.TransService.getSalesTerritory(this.params);
      })).
      subscribe(res =>{ 
        this.totalcount = res.Total; 
        this.salesTerritoryList =  res.Data;  
        this.serviceloading = false;     
      });
  }

HTML 内容

<p-table 
   #dt 
   [value]="salesTerritoryList" 
   [autoLayout]="true" 
   [totalRecords]="totalcount"
   [paginator]="true" 
   [rows]="15" 
   [lazy]="true"
   [loading]="serviceloading"
   (onLazyLoad)="loadSalesTerritories($event)"
>
</p-table>

您可以在 switchMap 下方的管道中添加水龙头。请看下面。希望对您有所帮助。

this.TransactionSearch.pipe(
  distinctUntilChanged(),
  debounceTime(1000),
  tap(() => { 
    this.serviceloading = true;
  }),
  switchMap(() => { return this.TransService.getSalesTerritory(this.params);})).
  subscribe(res =>{ 
    this.totalcount = res.Total; 
    this.salesTerritoryList =  res.Data;  
    this.serviceloading = false;     
  });