我可以将observable设置为undefined或null吗?

时间:2019-06-30 19:46:59

标签: angular rxjs

我的Angular类中有一个类似这样的可观察对象:

fullMember: Observable<Member | undefined>

并在构造函数中:

this.fullMember = store.pipe(select(selectActiveMember))

从这个选择中,我正在传递信息:

this.firstName = this.fullMember.pipe(filterUndefined(), map(m => m.firstName))
this.lastName = this.fullMember.pipe(filterUndefined(), map(m => m.lastName))
this.phoneNumber = this.fullMember.pipe(filterUndefined(), map(m => m.detail.homePhoneNumber))

这一切都可行,但是我想使此Observable不确定,以显示另一个activeMember

的加载状态

我尝试过的事情

我尝试在ngOnChanges

中做类似的事情
ngOnChanges(changes: SimpleChanges): void {

    this.fullMember.pipe().subscribe({
      next: () => undefined 
    })
}

但是那什么也没给我。我不确定是否可以做到这一点,因为谷歌搜索并没有给我带来任何好处。可以使可观察的不确定吗?

1 个答案:

答案 0 :(得分:0)

如评论中所述,您似乎正在使用ngrx。

在这种情况下,建议您管理一个用于加载状态的专用字段。例如loading,带有专用选择器。

它将提高可读性和可维护性

在分派动作loadMember时,在减速器内设置当前的加载状态:

return {
   ...state,
   loading: true
}

然后,执行操作loadMemberSuccess

return {
   ...state,
   activeMember: payload,
   loading: false
}

在组件中ts:

loading$ = this.store.pipe(select(appSelectors.getLoading));

然后进入模板:

<my-loader *ngIf="loading$ | async">
</my-loader>