webpack_imported_module_5 webpack_imported_module_2 rxjs_observable observable_1 not error javascript angular typescript angular2-observables

javascript - observable_1 - rxjs_observable__ webpack_imported_module_2__ observable throw



¿Cómo lanzar un error observable manualmente en angular2? (6)

Estoy trabajando en la aplicación angular2 en la que hago una llamada de descanso a través de HTTp como se muestra a continuación:

login(email, password) { let headers = new Headers(); headers.append(''Content-Type'', ''application/x-www-form-urlencoded''); let options = new RequestOptions({ headers: headers }); let body = `identity=${email}&password=${password}`; return this.http.post(`${this._configService.getBaseUrl()}/login`, body, options) .map((res: any) => { let response: any = JSON.parse(res._body); if (response.success == 0) { Observable.throw(response); // not working } else if (response.success == 1) { console.log(''success''); localStorage.setItem(''auth_token'', ''authenticated''); this.loggedIn = true; return response; } }); }

básicamente quiero que mi componente obtenga respuesta y error en mi llamada de suscripción.

es decir

this._authenticateService.login(this.loginObj[''identity''],this.loginObj[''password'']).subscribe( (success)=>{ this.credentialsError=null; this.loginObj={}; this._router.navigate([''dashboard'']); }, (error)=>{ console.log(error); this.credentialsError=error; } );

pero mi api siempre devuelve el éxito como lo definí de esa manera.

Así que quiero saber cómo puedo enviar un mensaje de error si response.success == 0 , para que se pueda acceder dentro del argumento de error de mi devolución de llamada de suscripción.


La mayoría de mis problemas estaban relacionados con las importaciones, así que aquí está el código que me funcionó ...

import {_throw} from ''rxjs/observable/throw''; login(email, password) { ... return this.http.post(`${this._configService.getBaseUrl()}/login`, body, options) .map((res: any) => { ... if (response.success == 0) { _throw(response); } else if (response.success == 1) { ... } }); }

Esta será la solución si te enfrentas a errores como ...

ERROR TypeError: WEBPACK_IMPORTED_MODULE_2_rxjs_Observable .Observable.throw no es una función


Utilizar el operador de captura

this.calcSub = this.http.post(this.constants.userUrl + "UpdateCalculation", body, { headers: headers }) .map((response: Response) => { var result = <DataResponseObject>response.json(); return result; }) .catch(this.handleError) .subscribe( dro => this.dro = dro, () => this.completeAddCalculation() );

Y maneja el error así:

private handleError(error: Response) { console.error(error); // log to console instead return Observable.throw(error.json().error || ''Server Error''); }


Ya sea

throw response;

o

return Observable.throw(response); // not working


con rxjs 6

import { throwError } from ''rxjs''; throwError(''hello'');


rxjs 6

import { throwError } from ''rxjs''; if (response.success == 0) { return throwError(response); }

rxjs 5

import { ErrorObservable } from ''rxjs/observable/ErrorObservable''; if (response.success == 0) { return new ErrorObservable(response); }

Lo que devuelva con ErrorObservable depende de usted


if (response.success == 0) { throw Observable.throw(response); }