无法在自定义身份验证服务中使用存储服务

时间:2017-07-11 12:52:23

标签: javascript angular typescript ionic-framework ionic3

出于某种原因,我无法通过自定义身份验证服务访问存储服务和设置存储属性。

我有一个登录方法应该点击我的API,获取令牌,解码令牌并通过存储存储用户信息。如果我在登录承诺中这样做,这一切都有效,但这对我来说似乎是反模式。

我已导入存储模块...

git push origin master --force

并注入构造函数......

import { Storage } from '@ionic/storage';

然后当我尝试在constructor(private http: Http, private storage: Storage) { return this.http.post(this.LOGIN_URL, JSON.stringify(credentials), { headers: this.contentHeader }) .map(this.extractData) .catch(this.handleError); } 服务的响应中使用它时

http

我收到错误

private extractData(res: Response) {
  let body = res.json();
  this.error = null;
  this.user = body.user[0];
  this.storage.ready().then(()=>{
    this.storage.set('profile',this.user);
    this.storage.set('token',body.token);
  });
  return body || {};
}

我似乎无法在网上找到它在服务中的工作方式与模块内的不同。

1 个答案:

答案 0 :(得分:0)

this引用使用上下文变量。您的代码应如下所示:

private extractData(res: Response) {
  let body = res.json();
  let context = this;
  this.error = null;
  this.user = body.user[0];
  this.storage.ready().then(()=>{
    context.storage.set('profile',context .user);
    context.storage.set('token',body.token);
  });
  return body || {};
}