2017-10-18 15 views
0

Sur mon back-end J'ai reçu deux réponses possibles dans cette action.NativeScript - Ne reçoit aucune réponse du serveur principal avec le patch sur NotFound()

Le premier:

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

Et le second:

return NotFound(); 

Et sur mon front-end je suis arrivé ceci:

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..."}); 
      } 
     }); 

Si le dos -end atteint le Ok(), le if est exécuté et tout fonctionne parfaitement. Toutefois, si mon back-end atteint le second retour, qui est le NotFound(), rien ne se passe. Vous voyez ce log au début du subscribe()?

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

Eh bien, si NotFound() est retourné, rien est montré sur le journal. C'est presque comme si l'abonnement n'était jamais exécuté.

Pourquoi cela se produit-il?

Répondre

2

Vous devez ajouter gestionnaire catch pour intercepter toutes les autres réponses que 200(OK) parce qu'ils sont traités comme des erreurs, comme celui-ci -

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..."}); 
} 

Plus plus d'informations se réfèrent https://hassantariqblog.wordpress.com/2016/12/03/angular2-http-patch-with-complex-object-using-observable-in-angular-2-application/