He tenido mi servicio de base de datos en Angular configurado de esta manera desde Angular 6 y me encuentro con este error por primera vez.
Tengo un HTTP POST estándar que devuelve un resultado. En el caso de un error, quiero que se maneje el error. El error más probable es simplemente un token caducado, así que lo manejo específicamente para cerrar la sesión del usuario.
CORREO
postUsp(username): Observable<ProcResult[]> { const url = hosturl +'u_sp'; const httpOptions = { headers: new HttpHeaders({ 'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json', 'Authorization': ls || '{}' }), withCredentials: true, params: { 'username': username, } }; return this._http.post<ProcResult[]>(url, null, httpOptions) .pipe( map((res) => { return <ProcResult[]> res; }), catchError(this.handleError) ) }handleError
private handleError(error: Response | any) { if (error.status === 401) { console.log('Signing out.') try { Auth.signOut().then(() => { window.location.reload() }) return error } catch (error) { console.log('error signing out: ', error); } } else { return throwError(error); } }Salida de error completa:
Error: src/app/db.service.ts:303:3 - error TS2322: Type 'Observable<unknown>' is not assignable to type 'Observable<ProcResult[]>'. Type 'unknown' is not assignable to type 'ProcResult[]'. 303 return this._http.post<ProcResult[]>(url, null, httpOptions) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 304 .pipe( ~~~~~~~~ ... 309 catchError(this.handleError) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 310 )Tienes que agregar throwError en el bloque try and catch .
private handleError(error: Response | any) { if (error.status === 401) { console.log('Signing out.'); try { Auth.signOut().then(() => { window.location.reload() }) return throwError(error); } catch (error) { console.log('error signing out: ', error); return throwError(error); } } else { return throwError(error); } }