【发布时间】:2017-11-01 13:47:15
【问题描述】:
我正在尝试从 getToken() 中的 ionics storage 检索令牌,然后在 refreshToken() 中使用它,通过将令牌传递给 (this.jwtHelper.isTokenExpired(this.token) 来查看令牌是否过期,这取决于是否返回 true 或 false令牌是否过期。我已将 cmets 放在 refreshToken() 中,我收到以下错误
错误 1:
Error: TS2345:Argument of type '(response: Response) => void' is not assignable to parameter of type '(value: Response) => void'.
Types of parameters 'response' and 'value' are incompatible.
Type 'Response' is not assignable to type 'Response'. Two different types with this name exist, but they are unrelated.
Property 'body' is missing in type 'Response'.
错误 2:
Error:(34, 46) TS2339:Property 'token' does not exist on type 'Promise<any>'.
我的代码
import {AuthHttp, JwtHelper, tokenNotExpired} from "angular2-jwt";
import {Observable} from "rxjs/Observable";
import {AuthService} from "../Services/Auth/auth.service";
import {Injectable} from "@angular/core";
import { Storage } from '@ionic/storage';
import {AlertController} from "ionic-angular";
@Injectable()
export class TokenProvider {
jwtHelper: JwtHelper = new JwtHelper();
token;
constructor(private authHttp: AuthHttp, private storage: Storage, private alertCtrl: AlertController) {
}
getToken(): Promise<any> {
return this.storage.get('token').then(token => {
this.token = token;
});
}
refreshToken(): Observable<any> {
return this.token = Observable.fromPromise(this.getToken())
.flatMap(() => {
if(this.jwtHelper.isTokenExpired(this.token))
{
return this.authHttp.get('localhost.api/refresh')
.subscribe( // ERROR 1 HERE
(response: Response) => {
this.token = response.json().token; // ERROR 2 HERE
},
(error: Response) => {
console.log(error);
});
}
});
}
【问题讨论】:
-
你能添加你对这个文件的导入语句吗?
-
已更新导入
标签: angular typescript ionic-framework ionic2