【发布时间】:2016-12-21 16:55:00
【问题描述】:
我正在尝试获取路由参数,然后从服务中获取数据
this.route.params
.switchMap(params => this.service.getData(params['id']))
.subscribe(value => this.value = value,
error => console.log(error));
这工作正常,直到第一个错误。出现错误后,此行不再调用 params => this.noteService.GetParams(params['id'])。
我可以写这样的东西,但我认为有更好的方法
this.route.params.subscribe(
params => {
this.service.getData(params['id']).subscribe(
result => console.log(result),
error => console.log(error))
});
我的服务
public getData(id): Observable<any> {
return this.http.get('api/data/' + id)
.map(data => data.json())
.catch(error => Observable.throw(error));
}
更新
这个answer 帮助我了解发生了什么。
当我调用Observable.throw(error) 订阅路由参数时,会因错误而停止。因此,我只需要返回空的 observable,而不是抛出错误。
my.component.ts
this.route.params
.switchMap(params => this.service.GetData(params['id']))
.subscribe(result => {
if (result) this.data = result;
else console.log('error');
});
my.service.ts
public GetData(id): Observable<any> {
let url = 'api/data' + id;
return this.http.get(url)
.map(data => data.json())
.catch(error => Observable.of(null));
}
【问题讨论】:
-
你遇到了什么错误?
-
504(网关超时)
标签: http angular rxjs observable