2017-01-10 32 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);