1

在我使用 Angular 和 RxJS 6 的网络应用程序中。该应用程序有一个登录,登录的响应是一个令牌,所以登录后,我将令牌保存在 sessionStorage 中,然后我解码令牌以保存当前登录用户。这是登录后的状态:

在此处输入图像描述

我正在尝试开发这种行为:如果用户转到页面“..login”(所以在 login.components.ts 中)并且如果他已经登录,则应用程序将重定向到主页。这是我在login.component.ts中的 ngOnInit() 中的代码:

  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() 中放了一个断点,但它没有到达断点,它甚至没有进入它,所以它没有'不重定向到主页。为什么?

* 更新 * : 这是调试屏幕 在此处输入图像描述

4

1 回答 1

0

select()函数返回一个Observable,所以你必须.subscribe()要它才能pipe被调用。

于 2018-07-04T13:00:04.037 回答