UNPKG

generator-loom

Version:
49 lines (43 loc) 1.8 kB
import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router'; import { Observable } from 'rxjs/Observable'; import { HttpClient } from '@angular/common/http'; import { BehaviorSubject } from 'rxjs/BehaviorSubject'; import { <%= Page %> } from './<%= pages %>.model'; @Injectable() export class <%= Pages %>Service implements Resolve<any> { <%= pages %>: <%= Page %>[]; on<%= Page %>Changed: BehaviorSubject<any> = new BehaviorSubject({}); on<%= Page %>Selected: BehaviorSubject<any> = new BehaviorSubject({}); constructor(private http: HttpClient) {} /** * Resolve * @param {ActivatedRouteSnapshot} route * @param {RouterStateSnapshot} state * @returns {Observable<any> | Promise<any> | any} */ resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> | Promise<any> | any { return new Promise((resolve, reject) => { Promise.all([ this.get<%= pages %>() ]).then( () => { this.get<%= pages %>(); resolve(); }, reject ); }); } get<%= pages %>(): Promise<any> { return new Promise((resolve, reject) => { this.http.get('api/<%= pages %>-data.json') .subscribe((response: any) => { this.<%= pages %> = response; this.<%= pages %> = this.<%= pages %>.map(<%= page %> => { return new <%= Page %>(<%= page %>); }); this.on<%= Page %>Changed.next(this.<%= pages %>); resolve(response); }, reject); }); } }