catch。
this.route.parent.params.subscribe(
params => {
const etc = this.service.getEtc()
Observable.blah.subscribe(results => {
this.abc = false
})
.catch( err => {
this.service.showErrorAlert('can not find');
})
});
答案 0 :(得分:11)
正如评论中所提到的,subscribe
方法返回订阅,通常应该是您链中的最后一个调用。尝试:
Observable.blah
.catch(err => this.service.showErrorAlert('can not find'))
.subscribe(results => this.abc = false);
随着管道操作员的引入,上面的代码可以用以下内容替换:
import { catchError } from 'rxjs/operators';
Observable.blah
.pipe(catchError(err => this.service.showErrorAlert('can not find')))
.subscribe(results => this.abc = false);
但是,catchError
应该用于管道中某处的错误恢复,例如:出现错误,但您可以返回默认对象。
要在可观察链的末尾捕获错误,我建议使用不同的.subscribe
重载并传入错误处理程序。
Observable.blah
.subscribe(
results => this.abc = false,
err => this.service.showErrorAlert('can not find')
);
答案 1 :(得分:5)
您正试图调用您订阅的catch。这是不可能的。您有两个选择:
1:
Observable.blah
.catch(err => {...})
.subscribe(results => {
this.abc = false
})
2:
Observable.blah
.subscribe(results => {
this.abc = false
},
err => {
...
})