我已经在ionic2和Angualr2中创建了一个用于登录的身份验证提供程序,如下所示:
login provider
@Injectable()
export class Service{
public token : any;
constructor(public http: Http, public storage: Storage){}
login(credentials){
return new Promise((resolve, reject)=>{
//headers implemented.
this.http.post('url',credentials, {headers: headers} )
.subscribe(res=>{
let data = res.json();
this.token = data.token // error is shown here. red line on token.
storage.set('token',data.token)
resolve(credentials);});
token
的{{1}}字的注释行中提到了令牌上反映的错误。
需要帮助。
答案 0 :(得分:2)
您应该使用类型声明。根据您使用严格TypeScript配置的错误。同样通过使用async/await
,您可以生成更易读的代码。您遇到的问题要么是您没有设置let data: any
,要么是因为在;
声明后错过了data
,并且没有使用this.storage
,但只是storage
:
@Injectable()
export class Service{
public token : any;
constructor(public http: Http, public storage: Storage){}
login async (credentials: any): Promise<any> {
let data: any = await this.http.post('url',credentials, {
headers: headers
}).map(r => r.json()).toPromise();
this.token = data.token;
this.storage.set('token', data.token);
return credentials;
}
}
答案 1 :(得分:0)
什么是res.json()?它是一个函数或属性还是从string转换为json
尝试
json.parse(res)
答案 2 :(得分:0)
您应该导入import { Response } from '@angular/http';
,然后一切正常