2016-10-16 2 views
1

ich bei der Rückkehr ein Objekt in meinem Http Service im Fang meiner Komponente ein Problem mit:Return HTTP-Statuscode in der Komponente von Dienst - Angular 2

Hier ist mein Code in meinem Dienst:

login(username,password){ 
     let headers = new Headers(); 
     headers.append('Content-Type','application/json'); 

     return this.http.post(this.configEnvironment.url() + "oauth/access_token", 
      JSON.stringify(
       { 
        username: username, 
        password: password, 
        grant_type: "password", 
        client_id: "xxxx", 
        client_secret: "xxxxx" 
       } 
      ), 
      { headers } 
     ) 
     .map(res => res.json()) 
     .catch((err:Response) => { 
      let details = err.json(); 

      return Observable.throw(details); 
     }); 

    } 

Hier ist mein Code in meiner Komponente:

this.loginService.login(this.model.username,this.model.password) 
      .subscribe(
       data => console.log(data), 
       error => { 
        // var details = error.json(); 
        console.log(error); 
       }, 
       () => console.log("Finished") 
      ); 

Es funktioniert gut, wenn ich die json Fehler wie diese nur zurückgeben:

let details = err.json(); 
    return Observable.throw(details); 

Aber wenn ich versuche, den http-Antwort-Statuscode wie folgt hinzuzufügen:

return { status: err.status, error: Observable.throw(details) } 

Es gibt mir einen Fehler von:

„Argument des Typs‚(err: Response) => {Status: Nummer; Fehler: ErrorObservable; } 'kann keinem Parameter vom Typ zugewiesen werden' (err: any, gefangen: Observable) => ObservableInput '. Typ '{Status: Nummer; Fehler: ErrorObservable; } 'kann nicht dem Typ' ObservableInput 'zugewiesen werden. Typ '{Status: Nummer; Fehler: ErrorObservable; } 'ist nicht dem Typ' ArrayLike < {}> 'zuweisbar. Eigenschaft 'Länge' fehlt im Typ '{Status: Nummer; Fehler: ErrorObservable; }‘.“

Mein Ziel nur den HTTP-Response-Code in der Rückkehr des Fanges enthalten ist.

Antwort

4

try Code unten, versuchen

.catch((err:Response) => { 
      let details = {detail:err.json(),status: err.status}; 
      return Observable.throw(details); 
}); 
+0

Dank Man arbeitet diese! –

+1

Willkommen. Ich möchte Sie nur informieren, gestern haben Sie eine Frage gestellt und ich habe geantwortet. Die Antwort war richtig und sofort hast du sie gelöscht. Tun Sie es nie, da es anderen Benutzern helfen könnte, Problem und Lösung zu finden, wenn sie auf die gleiche Situation stoßen. – micronyks

+0

Hoppla, tut mir leid, Mann und ja werden es nie wieder tun. Danke noch einmal! –

0

einfach diesen ein

return [{ status: err.status, error: err.json() }] 

sollte dies funktionieren

oder auch Sie können einfach die ganze 0 sendenObjekt im catch-Block und zum Zeitpunkt der Anmeldung überprüfen Sie den Statuscode dieser auch funktioniert.

return err 

und zum Zeitpunkt der Zeichnung verwenden

err.status

+0

micronyks antwort funktioniert –

+0

seine okii, froh zu hören du hast deine antwort, kannst du mir auch eine als alternative versuchen :) –

Verwandte Themen