Выберите штат с RxJS в Angular 6 не работает - PullRequest
0 голосов
/ 04 июля 2018

В веб-приложении я использую Angular и RxJS 6. Приложение имеет логин, ответом на него является токен, поэтому после логина я сохраняю токен в sessionStorage, а затем декодирую токен в сохранить текущего вошедшего в систему пользователя. Это состояние после входа в систему:

enter image description here

Я пытаюсь развить это поведение: если пользователь перейдет на страницу "..login" (например, в login.components.ts) и если он уже вошел в систему, приложение будет перенаправлено на домашнюю страницу. Это мой код внутри ngOnInit () в login.component.ts :

  ngOnInit() {
   this.store.select('auth')
     .pipe(take(1),
       map((authState: fromAuth.State) => {
         console.log('test');
         if (authState.authenticated) {
           this.router.navigate(['/home']);
         }
      }));
}

Это интерфейс AppState:

export interface AppState {
  user: fromProfile.State,
  auth: fromAuth.State,
  core: fromCore.State
}

Тестируя его, я вхожу в систему, иду домой, затем захожу на страницу входа, я ставлю точку останова в console.log (), но она не достигает точки останова, она даже не вводит ее, и поэтому он не перенаправляет на домашнюю страницу. Почему?

* ОБНОВЛЕНО *: это экран отладки enter image description here

1 Ответ

0 голосов
/ 04 июля 2018

Функция select() возвращает Observable, поэтому вам нужно .subscribe(), чтобы вызвать pipe.

...