Как сделать видимый компонент, если бэкэнд обновил токен успешно - PullRequest
0 голосов
/ 10 февраля 2019

Метод в authService, который отправляет запрос на внутренний сервер и получает ответ как json с токеном доступа

 refresh() {
        if (JSON.parse(localStorage.getItem('auth')) !== null && JSON.parse(localStorage.getItem('auth')) !== undefined) {
          const body = ...
          let headers = ...
          return this.http.post(this.authUrl, body.toString(), {
            headers
          });
        }
      }

Метод, который выше работает правильно

В компоненте navbar есть кнопка:

<button mat-menu-item (click)="addTrip()" *ngIf="isLogged()">
  <mat-icon>add</mat-icon>
  <span>add Trip</span>
</button>

, который должен быть видимым только в том случае, если токен существует в localStorage и если этот токен не истек

Метод isLogged не работает должным образом.Вызовите подписку this.auth.refresh.subscribe (..... вернуть true или false? ...) невозможно, так как подписка является несинхронизированным методом.Как сначала получить токен, а после вернуть логическое значение?

 isLogged() {
   if (JSON.parse(localStorage.getItem('auth')) !== null && JSON.parse(localStorage.getItem('auth')) !== undefined)   {
     this.auth.refresh();
   } else {
     return false;
   }
 }
...