私は関数からユーザー名とパスワードの値を渡しているので、ログイン後にトークンの値を取得できます。次のページで、私はそれらの値を渡すつもりはありません。なぜ私がヌルになっているのかが分かります。これは、私が約束でトークンリターンをラップしていないときです。私が下に見て約束しているトークン値をラップすると、私はこのエラーを受け取りますエラーTypeError:プロパティ '未定義の'を読み取ることができません、トークンは未定義ですこれは私が必要とするユーザーの資格情報でログインしていないためですトークンを生成するため、存在しないか、または定義されていません。私が上記のように2番目のページに電話をかけたときにnullを返さないと仮定すると、私は自分のストレージに関する約束を折り返しました。ありがとう!ローカルストレージの約束からの未定義の値。 Ionic 2+/Angular 4.3
Auth.ts
login(userName: string, password: string, route: string = null): any {
this.logout(false);
this.doLogin(userName, password)
.subscribe(response => {
let token:string = JSON.stringify(response.access_token);
this.storage.set('token', token);
});
}
getToken() :any{
this.storage.get('token').then((val) => {
this.accessToken = val;
if(this.accessToken == null){
return '0'
}
else{
return "Bearer " + this.accessToken.replace(/["]+/g, '')
}
})
}
component.ts
login(){
this.authService.login(this.account.username, this.account.password)
}
Interceptor.ts
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
let access = this.auth.getToken()
const authReq = req.clone({
setHeaders: {
Authorization: access
}
});
return next.handle(authReq)
}
ありがとう!
問題は、Observable>ではなく、エラーを引き起こしているPromise >を返すことです –
userlkjsflkdsvm