我正在尝试在代码中实现错误处理,并收到以下错误。我不确定是什么问题?
错误TS2339:类型“承诺”上不存在属性“管道”。 src / app / fund / fund.component.ts(166,34):错误TS2345:类型'(err:any)=> void'的参数不能分配给类型'(err:any,catch:Observable < {}>)=> ObservableInput”。 不能将类型“ void”分配给类型“ ObservableInput”
代码 从'rxjs / operators'导入{map,catchError};
saveFund() {
if (this.SelectedFundId === 0) {
this.fundService.createFund(this.FundDetails).then((result) => {
if (result) {
this.getFundDetails(this.SelectedFundId);
this.EditMode = !this.EditMode;
}
});
} else {
this.fundService.updateFund(this.FundDetails).then((result) => {
if (result) {
this.getFundDetails(this.SelectedFundId);
this.notify.success('Fund Details Successfully Updated');
this.EditMode = !this.EditMode;
}
}) .pipe(catchError (err => {
this.notify.error('An Error Has Occured While Updating Fund Details');
}));
}
}
答案 0 :(得分:0)
您将需要使用pipe
或Observable
,而不是使用.then()
作为.catch()
的方法,而后者是处理Promises中错误的方法
答案 1 :(得分:0)
管道是一种可观察的方法,应该与Observables
一起使用,而不是Promises。要处理来自 Promise 的错误,请使用 catch 方法,如下所示:
this.fundService.updateFund(this.FundDetails)
.then((result) => {
if (result) {
this.getFundDetails(this.SelectedFundId);
this.notify.success('Fund Details Successfully Updated');
this.EditMode = !this.EditMode;
}
})
.catch(err => console.log(err));
答案 2 :(得分:0)
您不能使用'pipe'运算符,因为它是 rxjs运算符。在您的情况下,您可以这样使用 catch(error):
saveFund() {
if (this.SelectedFundId === 0) {
this.fundService.createFund(this.FundDetails).then((result) => {
if (result) {
this.getFundDetails(this.SelectedFundId);
this.EditMode = !this.EditMode;
}
}).catch(err => {
this.notify.error('An Error Has Occured While Creating Fund Details');
});
} else {
this.fundService.updateFund(this.FundDetails).then((result) => {
if (result) {
this.getFundDetails(this.SelectedFundId);
this.notify.success('Fund Details Successfully Updated');
this.EditMode = !this.EditMode;
}
}).catch(err => {
this.notify.error('An Error Has Occured While Updating Fund Details');
});
}
}
希望这会为您服务!