没有 subscribe() 就不会触发选择器

Selector not fired without subscribe()

我有两个选择器:


哪个实现看起来像这样:

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 填充在全局状态中,它仍然不会被触发。

为什么?

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