В Angular 7 я храню JSON Web Token (JWT) локально через @ngx-pwa/local-storage
.Для получения и сохранения пар ключ-значение этот API является асинхронным.Затем у меня есть другой метод, который извлекает JWT и делает вызов HttpClient
.Я не могу связать и заставить эти асинхронные методы работать.
Мой метод получения JWT из localalstorage следующий:
private getHttpHeaders(): Observerable<object> {
return this.localStorage.getItem<string>('token', {schema: {type: 'string'}}).pipe(map(token => {
return {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'X-Access-Token': token
})
};
}));
}
Мой другой метод выглядит следующим образом.
public isLoggedIn(): Observable<boolean> {
const url = `${this.host}/account/isloggedin`;
return new Observable<boolean>(observer => {
this.getHttpHeaders()
.pipe(map(headers => {
return this.httpClient.get<any>(url, headers)
.pipe(map((json) => {
observer.next(json && json.result && json.result === true);
}));
}));
});
}
Когда я пытаюсь позвонить myService.isLoggedIn()
, ничего не происходит.Если я вставлю console.log
сообщения, я могу проследить, что getHttpHeaders()
вызывается, но возвращаемое Наблюдаемое не вызывается.
Есть какие-либо идеи о том, что я делаю неправильно?