Проблема Angular 6 с проверкой локального хранилища при запуске приложения - PullRequest
0 голосов
/ 26 октября 2018

У меня проблема с проверкой загрузки страницы, если пользователь вошел в приложение или нет.Я попытался с помощью EventEmmiter и Subject, но при загрузке нет результата для проверки в локальном хранилище.

Это мой AuthenticationService

export class AuthenticationService {
  constructor() {
  }
  // here is bunch of code

  isLoggedIn(): boolean {
    let currentUser = localStorage.getItem('currentUser');
    return !!(currentUser);
  }

}

, и это мой HedaerComponent:

constructor(private authenticationService: AuthenticationService) {
 this.checkUser();
}

checkUser() {
 if (this.authenticationService.isLoggedIn()) {
 // do something
 }
 else {
 // do something
 }
}

У меня проблема с первой загрузкой приложения, как я могу проверить, вошел ли пользователь в систему или нет?Как мне грустно, я пытаюсь испустить значение, но безрезультатно.Спасибо за помощь!

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Вы можете использовать охранника маршрута Angular для достижения этого.Вот некоторые уроки:

  1. https://ryanchenkie.com/angular-authentication-using-route-guards

  2. https://angular.io/guide/router#milestone-5-route-guards

0 голосов
/ 29 октября 2018

Я решил свою проблему с добавлением нового сервиса, вот пример

import { Subject } from 'rxjs';

class CustomEventEmitter extends Subject<any>{
 constructor() {
    super();
 }
 emit(value: any) {
    super.next(value);
 }
}

export class PubSubService {
 Stream: CustomEventEmitter;
 constructor() {
    this.Stream = new CustomEventEmitter;
 }
}

Спасибо за помощь!

0 голосов
/ 26 октября 2018

Это должно помочь

 let currentUser = JSON.parse(localStorage.getItem('currentUser'));
...