我的angular2应用程序中有可观察的数据。该数据有2个属性
{isFetching: false, user: {userID: 1, firstName: "john", lastName: "public"} }.
从服务器检索数据时,isFetching标志为true且user对象为null。在我的一个组件中,我需要通过可观察对象上的userID获取一些其他数据。最初,当observable被订阅时,用户对象为null。在我的代码中,我必须在执行其他操作之前检查用户是否为null。下面的代码可以工作,但我认为必须有比在subscribe块中有条件更好的方法。
this.store.select<UserProfileState>('user')
.subscribe(user => {
if (!user.isFetching) {
this.store.dispatch(this.informationPanelActions.loadInformationPanel(user.user.clientID, user.user.userID));
}
});
感谢任何帮助。
答案 0 :(得分:3)
当您使用Observable时,您可以使用过滤器:
this.store.select<UserProfileState>('user')
.filter(user => !user.isFetching)
.subscribe(user => {
this.store.dispatch(this.informationPanelActions.loadInformationPanel(user.user.clientID, user.user.userID));
});