2017-10-18 66 views
0

上沒有從補丁上得到任何響應在我的後端我在該操作中得到了兩個可能的響應。NativeScript - 在NotFound()

第一招:

return Ok(new { Message = "email_confirmed" }); 

,第二個:

return NotFound(); 

而且我前端我得到這個:

let url: string = "http://10.0.2.2:53286/api/Home/AccountValidation?codeActivation=" + this.code; 

     this.http.patch(url, { 

     }).subscribe((res) => { 
      console.log(JSON.stringify(res)); 

      if(res.status != 404) { 
       alert({title: "Sistema 3 Esferas", message: "¡Tu cuenta ha sido activada satisfactoriamente! :)", okButtonText: "¡Entendido!"}); 
       this.router.navigate(["/Miembro"]); 
      } else { 
       this.btnEnabled = true; 
       alert({title: "Sistema 3 Esferas", message: "Has introducido un código inválido. :(", okButtonText: "Entiendo..."}); 
      } 
     }); 

如果回 - 結束達到Ok(),然後if得到執行,一切正常。 但是,如果我的後端達到第二個回報,即NotFound()之一,則不會發生任何情況。您在subscribe()的開頭看到這個log

console.log(JSON.stringify(res)); 

好吧,如果返回NotFound(),什麼都不顯示的日誌。這幾乎就像訂閱從未執行過。

這是爲什麼發生?

回答

2

您需要添加catch處理程序捕獲超過200(OK)所有其他反應,因爲它們視爲錯誤,這樣的 -

this.http.patch(url, { 

    }).subscribe((res) => { 
     console.log(JSON.stringify(res)); 
      alert({title: "Sistema 3 Esferas", message: "¡Tu cuenta ha sido activada satisfactoriamente! :)", okButtonText: "¡Entendido!"}); 
      this.router.navigate(["/Miembro"]); 
    }).catch(this.handleError); 
}; 

private handleError(error: any) { 
    let errMsg = (error.message) ? error.message : 
     error.status ? `${error.status} - ${error.statusText}` : 'Server error'; 
    console.error(errMsg); 

    this.btnEnabled = true; 
      alert({title: "Sistema 3 Esferas", message: "Has introducido un código inválido. :(", okButtonText: "Entiendo..."}); 
} 

更多詳細信息,請參閱https://hassantariqblog.wordpress.com/2016/12/03/angular2-http-patch-with-complex-object-using-observable-in-angular-2-application/