import { Injectable } from '@angular/core'; import { Http, Headers, Response } from '@angular/http'; import { PageResponse } from './pageresponse' import 'rxjs/add/operator/catch'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/toPromise'; @Injectable() export class PagingService { pageNumber: number; pageSize: number; pageIsLoading: boolean; pageResponse: PageResponse; allItems: any[] = []; constructor(private http: Http) { this.pageNumber = 0; this.pageSize = 10; this.pageIsLoading = false; this.pageResponse = new PageResponse(); } callNextPage(httpUrl: string){ this.pageIsLoading = true; if(httpUrl.indexOf("?") >= 0) //url already contains a '?' { httpUrl += "&"; } else{ httpUrl += "?"; } httpUrl += "pageNumber="+this.pageNumber+"&pageSize="+this.pageSize; var pageResponse = this.http.get(httpUrl) .toPromise() .then(response => response.json() as PageResponse); pageResponse.then(response =>{ this.pageResponse = response; this.pageResponse.items.forEach(element => { this.allItems.push(element); }); if(this.pageResponse.items.length > 0) { this.pageNumber++; } this.pageIsLoading = false; }); } }