出于某种原因,我无法通过自定义身份验证服务访问存储服务和设置存储属性。
我有一个登录方法应该点击我的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 || {};
}
我似乎无法在网上找到它在服务中的工作方式与模块内的不同。
答案 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 || {};
}