2017-01-10 142 views
1

当我拒绝解决承诺时,此错误将显示在控制台上。 控制台: 例外:未捕获的(在承诺):空error_handler.js:56 ORIGINAL堆栈跟踪: 错误:未捕获的(在承诺):空拒绝承诺作为服务解决

@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 
        }) 
      } 
     }); 

    } 
+0

角2.4.1和3.4.1路由器版本 – Faris

+0

你有什么期望? –

回答

0

只需使用

resolve(null); 
而不是

reject(null); 
0

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

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

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

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