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 ',