UNPKG

ngrx-model

Version:

Model classes for integrating ngrx store with a REST API

36 lines (27 loc) 981 B
import { Observable, BehaviorSubject, Subscription } from 'rxjs'; import { HttpUtility } from '../http/http.service'; import { RequestService } from '../request/request.service'; import { INextHandler, IErrorHandler, ICompletionHandler } from './modelTypes'; export interface IBaseModelConfig<T> { url: string; transform?: any; } export class BaseModel<T> { protected dataStream$: BehaviorSubject<T>; url: string; requestService: RequestService; constructor(config: IBaseModelConfig<T>, requestService: RequestService) { this.url = config.url; this.requestService = requestService; } subscribe(onNext?: INextHandler<T>, onError?: IErrorHandler, onCompletion?: ICompletionHandler): Subscription { if (!this.dataStream$) { this.init(); } return this.dataStream$.subscribe(onNext, onError, onCompletion); } init(): void { this.dataStream$ = new BehaviorSubject<T>(null); // make a request then push to stream } }