Wie behandeln Fehler in einem Resolver

Ich versuche, Resolver, um eine bessere UX. Funktioniert alles Super auf den happy path. Was kann ich nicht scheinen, um herauszufinden, ist, wie die Behandlung von Ausnahmen. Mein resolver einen Dienst aufruft, und das trifft ein webapi-Projekt. Ein Beispiel:

FooResolver:

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Foo> {
      return this.fooService.getById(route.params['id']).catch(err => {
    ****not sure what to do/return in the case of a server error****
    return Observable.throw(err);
  });
} 

FooService:

  public getById(id: string): Observable<Foo> {
    return this.http.get(`${ this.apiUrl }/${ id }`)
        .map(this.extractData)
        .catch(this.handleError);
}

Die handleError-Funktion:

   protected handleError (error: Response | any) {
    //Todo: Log the error   
    //Errors will be handled uniquely by the component that triggered them
    return Observable.throw(error);
}

Innerhalb der FooComponent ich tun (dies ist nie der hit, die im Falle eines Fehlers zurückgegeben, die von der Dienst - /resolver):

FooComponent:

ngOnInit(): void {
    this.foo= this.route.snapshot.data['foo'];
    if (this.foo) {
       this.createForm(this.foo);
    }
}

Habe ich versucht, wirft den Fehler (wie gezeigt) - ich bekomme diese exception in der Konsole:

Nicht erfasste (bei Versprechen): Antwort mit status: 500 Internal Server Error
URL:

und die Rückkehr new Observable<Foo>(), die gibt es:

Cannot read property 'abonnieren' undefined

Habe ich ein paar Resolver, die alle erleben können Ausnahmen auf dem server, Aber ich weiß nicht, was zu tun ist im Falle dieser Ausnahmen.

InformationsquelleAutor Matt M | 2017-05-10
Schreibe einen Kommentar