【问题标题】:Reject Promise in Resolve as a Service在 Resolve as a Service 中拒绝 Promise
【发布时间】:2017-05-24 21:06:09
【问题描述】:

当我在 resolve 中拒绝承诺时,此错误将显示在控制台上。 在控制台中: 例外:未捕获(承诺):null error_handler.js:56 原始堆栈跟踪: 错误:未捕获(承诺中):null

@Injectable()
export class PaymentScheduleResolve implements Resolve<any> {
    constructor(private rtoService: RtoService,
                private rtoActivationService: RtoActivationService,
                private router:Router,
                private toastr: Toastr) {
    }
    resolve() {
        var self = this;
        return new Promise((resolve, reject) => {
            let rtoInfo = self.rtoActivationService.getRtoInfo();
            if (!rtoInfo) {
                reject("null");// This will produce error on console

            }
            else{
                self.rtoActivationService.getPaymentSchedules(rtoInfo.Id, rtoInfo.Data.RtoRentLength)
                    .then((res: any) => {
                        if (res.Response && res.Response.Code === 200) {
                            resolve(res.Response.Data);

                        }
                        else {
                            reject(null);// This will produce error on console
                        }
                    })
                    .catch((err: any) => {
                        console.log(err);
                        reject(null);// This will produce error on console
                    })
            }
        });

    }

【问题讨论】:

  • Angular 2.4.1 和 Router 3.4.1 版本
  • 你期待什么?

标签: javascript angular angular2-routing


【解决方案1】:

随便用

resolve(null);

而不是

reject(null);

【讨论】:

    【解决方案2】:

    使用以下命令拒绝解析器。这会将您重定向到默认路由。

    reject({message: err , ngNavigationCancelingError: true});
    

    或者你可以重定向到错误页面

    this.router.navigateByUrl('errorPage');
    resolve(false);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      相关资源
      最近更新 更多