2017-10-18 4 views
0

私のバックエンドには、そのアクション内で2つの可能な回答があります。NativeScript - NotFound()のパッチを適用したバックエンドからの応答がありません

最初の1:

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

2つ目:

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

を-endはに達しますの場合はifが実行され、すべて正常に動作します。 ただし、バックエンドが2番目の返品(NotFound())に達しても何も起こりません。 subscribe()の先頭にはlogが表示されますか?

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

NotFound()が返された場合はまあ、何もログに示されていません。サブスクリプションが決して実行されなかった場合とほぼ同じです。

どうしてですか?

答えて

2

あなたは彼らがこのようなエラーとして扱われるため200(OK)以外のすべての他の応答をキャッチするcatchハンドラを追加する必要がある -

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/

を参照してください。
関連する問題