Могу ли я установить наблюдаемое неопределенным или нулевым? - PullRequest
0 голосов
/ 30 июня 2019

У меня есть такой наблюдаемый в моем классе 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 
    })
}

Но это ничего не дало мне. Я не совсем уверен, возможно ли это, так как поиск в Google ничего мне не дал. Можно ли сделать наблюдаемое неопределенным?

1 Ответ

0 голосов
/ 01 июля 2019

Как уже упоминалось в комментарии, похоже, что вы используете 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...