This commit is contained in:
Zoe Roux 2020-10-06 22:22:55 +02:00
commit 724822f255
2 changed files with 15 additions and 11 deletions

View File

@ -2,11 +2,12 @@ import {HttpClient} from "@angular/common/http";
export class Page<T>
{
this: string
next: string
first: string
count: number
items: T[]
this: string;
next: string;
first: string;
count: number;
items: T[];
private _isLoading: boolean = false;
constructor(init?:Partial<Page<T>>)
{
@ -15,17 +16,20 @@ export class Page<T>
loadNext(client: HttpClient)
{
if (this.next == null)
if (this.next == null || this._isLoading)
return;
this._isLoading = true;
client.get<Page<T>>(this.next).subscribe(x =>
{
this.items.push(...x.items);
this.count += x.count;
this.next = x.next;
this.this = x.this;
this._isLoading = false;
});
}
changeType(type: string)
{
return this.first.replace(/\/\w*($|\?)/, `/${type}$1`)

View File

@ -1,11 +1,11 @@
import { HttpClient } from "@angular/common/http";
import { Injectable } from '@angular/core';
import { Injectable } from "@angular/core";
import { Page } from "../models/page";
import { Observable, of } from "rxjs"
import { map } from "rxjs/operators"
import { Observable, of } from "rxjs";
import { map } from "rxjs/operators";
@Injectable({
providedIn: 'root'
providedIn: "root"
})
export class PreLoaderService
{
@ -15,7 +15,7 @@ export class PreLoaderService
load<T>(route: string): Observable<T[]>
{
let loaded = this.cache.find(x => x[0] == route);
let loaded = this.cache.find(x => x[0] === route);
if (loaded != null)
return of(loaded[1]);
return this.http.get<Page<T>>(route).pipe(map(newData =>