如何仅在 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))
跳过存储中的初始空值
我有一个组件,我希望在单击按钮时从后端获取一些数据,并根据该数据导航到正确的页面。
我在 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))
跳过存储中的初始空值