我有角度http的这个子类,它在我的应用程序中需要的地方优雅地注入。问题是:我需要检查一些值,即使它们不是http错误代码,并返回Observable Response。问题是订阅返回订阅。
这个类的目的是透明地处理一些常见的http错误全局(而http错误 - > catch块;或者api错误 - > json字段要在订阅块中检查)。
import {Injectable} from '@angular/core';
import {Http, ConnectionBackend, RequestOptions, RequestOptionsArgs, Request, Response} from '@angular/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/catch';
import 'rxjs/add/observable/throw';
@Injectable()
export class CustomHttpService extends Http {
constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {
super(backend, defaultOptions);
}
request(url: string | Request, options?: RequestOptionsArgs): Observable<Response> {
return super.request(url, options)
.catch((error: any) => {
// Do something here, maybe some redirect.
return Observable.throw(error);
})
.subscribe(res => {
if (res.json().status === 401) {
// Do something here, maybe some redirect too.
}
return Observable.of(res);
});
}
}
我正在阅读rxjs文档,但我仍然对许多概念感到困惑。任何帮助将不胜感激。
答案 0 :(得分:2)
使用TextBox
而不是订阅,subscribe是管道的末尾,处理程序,您要修改它。
map()