Проблема get loading()
заключается в том, что каждый раз, когда он вызывается, он возвращает новый поток, несмотря на то, что он полагается на this.userStore.loading
и this.chatStore.loading
.
вам нужно исправить это, как вариант, сделайте это свойство только для чтения, которое делает то же самое:
export class StoreService {
constructor(protected readonly userStore: UserStoreService, protected readonly chatStore: ChatStoreService) {}
create(): void {
this.userStore.setAll();
this.chatStore.setAll();
}
// to add $ to mark it as an observable is a nice style.
public readonly loading$: Observable<boolean> = combineLatest([
this.userStore.loading,
this.chatStore.loading,
]).pipe(
// maps to true if anyone is loading.
map(flags => flags.indexOf(true) !== -1),
// our start value is true.
startWith(true),
);
}
, и теперь каждый раз, когда один из них или оба загружаются, оно возвращает true, в противном случае - false.
{{ store.loading$ | async | json }}