属性“管道”在类型“承诺”中不存在

时间:2019-03-16 12:41:01

标签: angular

我正在尝试在代码中实现错误处理,并收到以下错误。我不确定是什么问题?

错误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');
            }));
        }
    }

3 个答案:

答案 0 :(得分:0)

您将需要使用pipeObservable,而不是使用.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');
        });
    }
}

希望这会为您服务!