// #docregion import { Injectable } from '@angular/core'; import { Observable } from 'rxjs/Observable'; import { of } from 'rxjs/observable/of'; import 'rxjs/add/operator/delay'; import { Hero, heroes } from './data-model'; @Injectable() export class HeroService { delayMs = 500; // Fake server get; assume nothing can go wrong getHeroes(): Observable { return of(heroes).delay(this.delayMs); // simulate latency with delay } // Fake server update; assume nothing can go wrong updateHero(hero: Hero): Observable { const oldHero = heroes.find(h => h.id === hero.id); const newHero = Object.assign(oldHero, hero); // Demo: mutate cached hero return of(newHero).delay(this.delayMs); // simulate latency with delay } }