检索 ionic2 存储的值并附加到值失败



我有一个自定义的http服务,该服务将访问令牌附加到每个请求,我想使用ionic2存储值的访问令牌

这是我前两个问题的代码

所以在 httpclient 服务中,我有

@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})
       );
     }

在设置令牌的身份验证服务中

 tokenEvent: Subject<any> = new BehaviorSubject(null);
  login(user: UserModel): Observable<any> {
    return this._http.post(this.loginurl + "mobile-login", body)
     .map((response: Response) => {
        let token = response.json().access_token;
       if (token) {
          this.storage.set('token', token).then(res => this.tokenEvent.next(true));
      return true;
    }
  })
//.catch(this.handleError);

}

现在我可以轻松地在任何 http 请求中使用来自第一个服务的获取,例如

getChecklists(truckid): Observable<any> {
return this._httpclient.get(this.inspectionurl + "get-checklists")
  .map(res=>res.json().data)

}

上面的第一个服务重新调整平面图不存在的错误。如何调整要在另一个 http 请求中使用的第一个服务,并从令牌事件附加令牌

这两个解决方案基于这个问题和这个问题

我认为你在这里不需要平面图,请参阅此链接:

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

只有当你的响应是可观察的并且你想合并流时,你才会使用它,我认为这不是你在这里的目标。

因此,您在 HttpClient 上的"get"函数将变为:

      get(url){
          let headers = new Headers();
          this.createGeneralHeaders(headers);
          return this.http.get(`${url}?access-token=${this.authtoken}`, {headers});               
      }

相关内容

  • 没有找到相关文章

最新更新