选择器在没有subscribe()的情况下未触发

时间:2019-08-03 14:39:02

标签: ngrx ngrx-store

我有两个选择器:

  • isLoggedIn-
  • selectUserDetails

哪种实现如下:

export const selectAuthState = state => state.auth;

export const isLoggedIn = createSelector(
    selectAuthState,
    auth => auth.loggedIn
);

export const selectUserDetails = createSelector(
    selectAuthState,
    auth => auth.userDetails
);

他们的状态如下:

export interface State {
  loggedIn: boolean,
  userDetails: UserDetails
}

export const initialAuthState: State = {
  loggedIn: false,
  userDetails: undefined
};

我对这段代码有疑问:

ngOnInit() {
    this.isLoggedIn$ = this.store.pipe(
      select(isLoggedIn)
    )

    this.userDetails$ = this.store.pipe(
      select(selectUserDetails)
    )
  }

这部分代码很好:

this.isLoggedIn$ = this.store.pipe(
          select(isLoggedIn)
        )

但这:

this.userDetails$ = this.store.pipe(
      select(selectUserDetails)
    )

仅与订阅一起触发。

this.store.pipe(
      select(selectUserDetails),
      map(...rest of code)
    ).subscribe();

在代码的其他部分,如果没有subscribe(),我也无法使用此selectUserDetails选择器。 起初,我认为这是未定义变量的问题,但是即使用户登录并且userDetails以全局状态填充,它仍然不会被触发。

为什么?

1 个答案:

答案 0 :(得分:0)

您确定不使用异步管道处理html文件中的isLoggedIn吗?