如何仅在 Angular/NgRx 中获取数据后才订阅 observable?

How to only subscribe to an observable after its data was fetched in Angular/NgRx?

我有一个组件,我希望在单击按钮时从后端获取一些数据,并根据该数据导航到正确的页面。

我在 ngOnInit() 函数中有以下代码:

ngOnInit() {
  this.store.select(getUsers)
  .pipe()
  .subscribe((users) => {
    this.navigateToNextStep(users.length > 0);  // navigates to correct page based on the boolean parameter
  });
}

我有以下功能:

nextClicked() {
  this.store.dispatch(MyActions.getUsers());
}

我的想法是,我会在创建组件时订阅可观察的用户列表,然后在单击按钮时获取列表,触发订阅。但是,即使未获取用户列表,我一进入页面就会触发订阅。

实现我的目标的正确方法是什么,只有在通过点击主动获取用户列表时才会发生导航?另请注意,用户列表已保存在商店中,因此我需要避免在用户 returns 离开页面后出现任何意外行为。

您可以使用 .pipe(filter(data => !!data)) 跳过存储中的初始空值