我有一项可从pouchdb获取应用程序设置的服务:
settings(): Observable<any> {
let vm = this;
return new Observable(observer => {
vm.pouch.get("_local/info", function(err, doc) {
if (err) {
observer.error({'setup': 0});
observer.complete();
} else {
observer.next(doc);
observer.complete();
}
});
});
}
我从其他组件和服务中调用该方法,如下所示:
this.settingService.settings().subscribe(data=>
{},
err => {
//redirect to settings page/component
vm.router.navigate(["settings"]);
},
() => {}
);
我想知道是否可以在出现错误时从settings()本身重定向?当它起作用时,我不确定预订settings()的组件会发生什么情况?
答案 0 :(得分:2)
您的代码看起来不错。这是您重定向后发生的事情:
在问题之外仅留一条小便条:如果要重定向到父路由,请使用vm.router.navigate(["/settings"])
进行导航。
答案 1 :(得分:0)
您可以map/tap
到Observable
返回的settings()
中,例如
public settings():Observable{
var obs= // whatever you did to generate Observable here in the first place
return obs.pipe(
tap((val)=>val, (err)=>doRedirect))
}