我有一个http覆盖类,用于将我的授权标头添加到我在Ionic2/Angular2应用程序中进行的每个调用。我使用硬编码的授权值进行测试可以正常工作,但是现在我需要添加从本地存储中获取凭证的部分(使用Ionic2 LocalStorage),并且遇到问题返回到我的服务。我收到错误“Can not read property'map of'undefined in [null]”。具有来自LocalStorage授权标题的HTTP客户端--Ionic2/Angular2应用程序
我觉得有一些非常简单的东西我失踪像一个“返回”或与我的嵌套承诺(我想尽可能简化,但一次1问题)。 Ionic 2和Angular 2都很新,所以我一直无法在网上找到合适的解决方案。我并不期望LocalStorage能够兑现承诺。
这是我的代码从我HttpClient的拦截器类:
getAuth(){
return this.local.get("UserName")
.then(res => {
this.user = res;
return this.local.get("Token").then(res => this.session=res);
});
}
get(url) {
let headers = new Headers({
'Accept': 'application/json',
'Content-Type': 'application/json; charset=utf-8'
});
let params = new URLSearchParams('format=json');
this.getAuth().then(() => {
var authHeader = 'Basic ' + this.encode(this.user + ':{SessionToken}' + this.session);
headers.append('Authorization',authHeader);
return this.http.get(url, {
headers: headers,
search: params
});
});
}
标头是正确的,并调用不用彷徨本身工作正常。只有当我在服务中使用它并尝试.map()时,我才会收到错误。我确实有导入'rxjs/add/operator/map'的;在我的服务。这是我如何把它从服务:
getTodos(id){
var url: string = this.global.APIUrl + "/" + id;
return this.httpClient.get(url)
.map((res)=> res.json());
}
当浏览器刷新,我得到:
无法读取财产[空]
如果不确定的“地图”我console.log(this.httpClient.get(url))
在这一点上,它返回一个承诺,但错误表明它返回“未定义”。也许HttpClient
类没有正确编译,但我没有从该类中得到任何错误来找出错误。