Ionic 3: ионное хранилище с наблюдаемыми - PullRequest
1 голос
/ 26 марта 2019

У меня есть CustomerPage, CustomerService и AuthService.

При необходимости передать access_token из AuthService в CustomerService для запроса http-get. AuthService и CustomerService не работают.

Пожалуйста, помогите мне!

Thnx.

CustomerPage:

this.customerService.getCustomersDashboard()
      .subscribe(....)

CustomerService:

getCustomersDashboard(): Observable<any> {
      var url = "......";
    let authHeader = this.authservice.getAuthHeaders();  // HttpHeader with access_token

    return this.http.get(url, { headers: authHeader }).pipe(
      map((resp: Response) => {
        let response = this.extractData(resp);
        return response;
      }));

AuthService: не работает !!!

 getAuthHeaders(){
    const authtoken = Observable.fromPromise(this.storage.get(`access_token`));

    return new HttpHeaders({ 'authorization': authtoken });  // => **not working**
  }

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Для чтения асинхронных данных и , затем сделайте с ним запрос - используйте оператор switchMap

getCustomersDashboard() {
  const url = '//...';
  // read data from storage
  return from(this.storage.get('access_token')).pipe(
    // now switch to a http-get request
    switchMap(access_token => {
      // make a HttpHeaders from it
      const headers = new HttpHeaders({ 'authorization': access_token });
      return this.http.get(url, { headers })
    }),
    // here you'll have your request results
    map(response =>
      this.extractData(response)
    )
  )
}

Обратите внимание, что fromPromise теперь простоfrom.

Надеюсь, это поможет

0 голосов
/ 26 марта 2019

вы можете использовать это:

this.local.get('access_token');

или вы можете использовать эти методы:

для установки токена:

this.local = new Storage(LocalStorage);
this.local.set("YourTokenValue", this.access_token);

для получения токена:

toCheckStatus();
function toCheckStatus()
{
    self.local = new Storage(LocalStorage);
    self.local.get('access_token').then((token) => 
    {
        console.log("token", token);
    });
}
...