У меня есть PostListComponent, который перебирает все сообщения, полученные с сервера, и отображает отдельный PostItemComponent.Я использую NGXS для управления состоянием.Когда я инициирую запросы fetchPosts, я изменяю свойство загрузки состояния: true.Когда запрос завершается успешно, я изменяю его обратно на false.Если запрос не выполняется, я обновляю объект ошибки в состоянии и обновляю свойство сообщения объекта ошибки и свойство исключения.
Вот что у меня есть
`
export class PostListComponent implements OnInit {
private posts$: Observable<any> = this.store.select(state => state.posts);
private isLoading: boolean = false;
private error: object = {};
constructor(
public postsFacade: PostsFacadeService,
public moviesFacade: MoviesFacadeService,
private store: Store) {
}
ngOnInit() {
this.posts$.subscribe(
(state) => this.onLoadingEvent(state)
);
this.posts$.subscribe(
(error) => this.onErrorEvent(error)
)
// this.posts$.pipe(
// mergeMap(() => {
// // perform the subscription here and listen for state changes
// })
// )
}
onErrorEvent(error)
{
this.error = error.error;
}
onLoadingEvent(state)
{
this.isLoading = state.loading;
}
`
Структура моего магазина
`
@State<PostStateModel>({
name: 'posts',
defaults: {
posts: [],
loading: false,
error: {
message: "",
error: ""
},
}
})
`
Мне кажется, что есть лучший способ подписаться на изменения состояния вхранить с использованием, возможно, оператора rxjs mergeMap.Я не уверен, возможно ли это и эффективен ли нынешний подход.Как еще я могу подписаться и реагировать на изменения магазина внутри моего компонента?