typescript - RxJS + Angular 4 kaster feil i subscribe onError som ikke bobler opp til tilpasset global feilbehandler


Jeg har et API-kall som kaster en unntak. I min komponent har jeg et abonnement på API-observable, og jeg vil kaste en feil som mottas på abonnementet for å bli håndtert av min tilpassede Angular-feilhåndterer.

Men i koden min kaster jeg feilen i onError-handleren, men den bobler ikke ut til den globale feilhåndtereren.

Komponentkall:

this.searchService.search(this.searchField.value)
          .subscribe(
            result => { this.result = result.artists.items; },
            err => { 
              console.log('subscribe on error');
              this.errorMessage = 'Error Occurred';
              //This error does not bubble out to the global angular error handler.
              throw new Error('Error here'); 
            },
        () => { console.log('Completed'); }
          );

Serviceanrop:

search(term: string) {
    return this.http.request(`https://api.spotify.com/v1/dsds?q=${term}&type=artist`)
      .map((response) => {
        return Observable.throw(result);
      }).catch((err: any)=>{
        console.log('in catch in service');
         return Observable.throw(err);

      })
      ;
  }

Her er en lenke til en plnkr for å demonstrere problemet, ved bruk av den nyeste versjonen av rxjs.

https://plnkr.co/edit/BI4njaMbtR7pfplQvgru?p=preview

Jeg bruker http.request i dette tilfellet fordi vi i den faktiske appen vår bruker NSwag studio for å generere TypeScript-klientene for å kalle web-APIene.

** Oppdatering**

Jeg opprettet en ny plunker og gikk til en tidligere versjon av rxjs, og i versjon 5.0.1 kaster et unntak i catch opp til Angulors globale feilhåndterer.

se eksempel her: https://plnkr.co/edit/ZMhTNbBfWaz4Y0TiI0jR?p=preview

Den eneste forskjellen er versjonen av rxjs i config.js-filen.

   'rxjs': 'https://npmcdn.com/[email ',

Relaterte artikler