Ngxs getState() after setState() returns empty always

Viewed 22

Building state with ngxs in angular

//Component.ts
ngOnInit(): void {
    const dataInsdeStore = this.store.selectSnapshot(MarketState);
    if(!dataInsdeStore.loaded){
      const category = this.marketplaceService.getMarketplaceCategories().subscribe(cat => {
        const item = this.marketplaceService.getMarketplaceItems().subscribe(i => {
          const obj = {
            categories: cat,
            items: i,
            loaded: true
          }
          this.store.dispatch(new SetMarketAction(obj))
        })
      })
    }
    const test = this.store.selectSnapshot(MarketState);
    this.store.dispatch(new GetMarketStateAction())
  }

Upon checking wether the state is empty or not, and dispatching SetMarketAction I get empty object anyways

//Market.actions.ts
import { MarketStateInterface } from "../interfaces/interfaces";

class SetMarketAction {
  static readonly type = '[MARKET] Set';
  constructor(public marketState : MarketStateInterface){}
}
class GetMarketStateAction {
  static readonly type = '[MARKET] Get';
}
export { SetMarketAction, GetMarketStateAction };


//Market.state.ts

import { Action, State, StateContext } from '@ngxs/store';
import { MarketStateInterface } from '../interfaces/interfaces';
import { Injectable } from '@angular/core';
import { GetMarketStateAction, SetMarketAction } from './market.actions';
@State<MarketStateInterface>({
  name: 'market',
  defaults: {
    categories: [],
    items: [],
    loaded: false,
  },
})
@Injectable()
export class MarketState {
  constructor() {}
  @Action(GetMarketStateAction)
  getMarket(ctx: StateContext<MarketStateInterface>) {
    const state = ctx.getState();
    console.log(state);
    return state;
  }
  @Action(SetMarketAction)
  setMarket(ctx: StateContext<MarketStateInterface>, action: SetMarketAction) {
    ctx.setState(action.marketState);
  }
}

Every time I conosle.log the state at any given time I get the empty array, the interface of the state is correct

0 Answers
Related