2017-02-12 3 views
0

ich einen benutzerdefinierten HTTP-Dienst, die ein Zugriffstoken zu jeder Anforderung legt, und ich möchte ein Zugriffstoken von ionic2 Speicherwertden Wert von ionic2 Speicher abrufen und auf einen Wert anhängen nicht

Dies ist der Code verwenden, von meinen beiden

So in dem Httpclient Service vorherigen Fragen i

@Injectable() 
export class HttpClient { 
    authtoken: string; 
    storage: Storage; 

constructor(private http: Http, storage: Storage, private _authService:Authservice) { 

    this._authService.tokenEvent.subscribe(res => { //subscribing to token event in authservice 
    if (res) { 
     this.storage.get('token') 
     .then(token => { 
      this.authtoken = token 
     }); 
     } 
    }) 
    } 

    get(url){ 
     let headers = new Headers(); 
     this.createGeneralHeaders(headers); 
     return Observable 
      .flatMap( //retuns an error flatmap doesnt exist on observable 
      name => this.http.get(`${url}?access-token=${this.authtoken}`, {headers}) 
     ); 

    } 

im authservice wo das Token

ist Einstellung 210

}

Jetzt kann ich leicht die get aus dem ersten Dienst in jeder HTTP-Anforderung verwenden, wie

getChecklists(truckid): Observable<any> { 

return this._httpclient.get(this.inspectionurl + "get-checklists") 
    .map(res=>res.json().data) 

}

Der obige erste Dienst Retuns einen Fehler, der tut flatmap existieren. Wie stelle ich den ersten Dienst in einer anderen HTTP-Anforderung verwendet werden, und auch ein Token vom Token-Ereignisse anhänge

Die beiden Lösungen basieren auf dem this question und this question

Antwort

2

Ich glaube nicht, müssen Sie eine flatmap hier finden Sie auf diesen Link:

http://reactivex.io/documentation/operators/flatmap.html

Nur wenn Ihre Antworten Observablen sind und Sie wollen den Strom fusionieren würden Sie das verwenden, was ich nicht glaube, Ihr Ziel ist.

So Ihre 'get' Funktion auf der Httpclient würde:

 get(url){ 
      let headers = new Headers(); 
      this.createGeneralHeaders(headers); 

      return this.http.get(`${url}?access-token=${this.authtoken}`, {headers});    
     } 
Verwandte Themen