我試圖在getToken()
檢索來自離子含量storage
令牌,並且不是用它在refreshToken()
看到如果令牌被傳遞到(this.jwtHelper.isTokenExpired(this.token)
它返回一個真正的過期或取決於令牌是否過期。我已經把意見在refreshToken()
那裏我得到了以下錯誤打字稿Angular2錯誤時,一個承諾,創造一個可觀察
錯誤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);
});
}
});
}
您可以添加該文件的導入語句嗎? – Saravana
用進口更新 – ghan