2017-03-21 26 views
1

父组件如何在使用observable发出新请求之前保留先前http请求的数据?

this.statisticsService.getData().subscribe(data => 
    this.processData(data)); 

processData(data: DataWrapper) { 
    if (!isNullOrUndefined(data) && data.table.rows.length > 1) { 
    this.noDataAvailableFlag = false; 
    this._statisticsData.next(data); 
    } else { // If no data available from backend 
    console.log('no data available'); 
    this.handleNoDataAvailable(); 
    } 
} 

模板

<div *ngIf="isDataAvailable" class="table-box clearfix default-style [ngClass]="backgroundColour"> 
    <div [hidden] ="!noDataAvailableFlag"> 
    <span class="no-data-message">{{'DETAILS.No_Data_Available' | translate}}</span> 
    </div> 
    <div [hidden] ="noDataAvailableFlag" detail-table [_statisticsData]="statisticsData" [maximiser]="maximiser" [queryParams]="filterService.getFullQueryParams()" 
    (onVariationClicked$)="onVariationClicked($event)"></div> 
    <div [hidden] ="noDataAvailableFlag" class="graph-holder clearfix" [ngClass]="{'opened': maximiser.isMaximised}" detail-graph 
    [_statisticsData]="statisticsData" 
    [tableVariation]="selectedVariationTitle"></div> 

儿童组件ngOnit方法。

ngOnInit() { 
    this.windowWidth = window.innerWidth; 
    this._statisticsData.subscribe(data => { 
    if (!isNullOrUndefined(data)) { 
    this.processData(data); 
    } 
}); 
} 

如果没有数据可用,我不想清除表格。我希望前一个请求的数据保持显示在表格中。请建议我如何解决这个问题。

回答

1

这就是过滤器是什么:

this._statisticsData 
    .filter(data => !isNullOrUndefined(data)) 
    .subscribe(data => { 
    this.processData(data); 
    }); 
+0

或只是'.filter(布尔)'... – Sasxa

+0

感谢。它的工作。 – Shikha

相关问题