add less 6 handleError
This commit is contained in:
parent
1e585195e9
commit
033b12ef11
|
@ -4,6 +4,7 @@ import { HEROES } from './mock-heroes';
|
||||||
import { Observable, of } from 'rxjs';
|
import { Observable, of } from 'rxjs';
|
||||||
import { MessageService } from './message.service';
|
import { MessageService } from './message.service';
|
||||||
import { HttpClient } from '@angular/common/http';
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
import { catchError, map, tap } from 'rxjs/operators';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
|
@ -18,15 +19,11 @@ export class HeroService {
|
||||||
private messageService: MessageService)
|
private messageService: MessageService)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
// getHeroes(): Observable<Hero[]> {
|
|
||||||
// const heroes = of(HEROES);
|
|
||||||
// this.messageService.add('HeroService: fetched heroes');
|
|
||||||
// return heroes;
|
|
||||||
// }
|
|
||||||
|
|
||||||
/** GET heroes from the server */
|
|
||||||
getHeroes(): Observable<Hero[]> {
|
getHeroes(): Observable<Hero[]> {
|
||||||
return this.http.get<Hero[]>(this.heroesUrl)
|
return this.http.get<Hero[]>(this.heroesUrl)
|
||||||
|
.pipe(
|
||||||
|
catchError(this.handleError<Hero[]>('getHeroes', []))
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
getHero(id: number): Observable<Hero> {
|
getHero(id: number): Observable<Hero> {
|
||||||
|
@ -37,8 +34,31 @@ export class HeroService {
|
||||||
return of(hero);
|
return of(hero);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle Http operation that failed.
|
||||||
|
* Let the app continue.
|
||||||
|
*
|
||||||
|
* @param operation - name of the operation that failed
|
||||||
|
* @param result - optional value to return as the observable result
|
||||||
|
*/
|
||||||
|
private handleError<T>(operation = 'operation', result?: T) {
|
||||||
|
return (error: any): Observable<T> => {
|
||||||
|
|
||||||
|
// TODO: send the error to remote logging infrastructure
|
||||||
|
console.error(error); // log to console instead
|
||||||
|
|
||||||
|
// TODO: better job of transforming error for user consumption
|
||||||
|
this.log(`${operation} failed: ${error.message}`);
|
||||||
|
|
||||||
|
// Let the app keep running by returning an empty result.
|
||||||
|
return of(result as T);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/** Log a HeroService message with the MessageService */
|
/** Log a HeroService message with the MessageService */
|
||||||
private log(message: string) {
|
private log(message: string) {
|
||||||
this.messageService.add(`HeroService: ${message}`);
|
this.messageService.add(`HeroService: ${message}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue