需要在服务调用 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;
});
我是 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;
});