NGXS: значение по умолчанию селектора прибывает позже, чем значение, установленное в действии - PullRequest
0 голосов
/ 14 июня 2019

У меня есть состояние со значением по умолчанию.У меня есть компонент, который имеет селектор и блок подписки в его ngOnInit.Странно, но данные, поступающие из серверной части, перезаписываются в этом блоке подписки, потому что данные инициализации поступают позже, чем реальные данные, которые мне нужны ... Консольные операторы журнала в следующем порядке:

ngOnInit initData (со значением состояния по умолчанию)pre PatchState searchInit (данные поступили с сервера) initData (данные поступили с сервера) initData (со значением состояния по умолчанию)

Я попытался подписаться с pipe (first ()), также пробовал в блоке setTimeout,не знаю, что происходит ...

код:

состояние:

@State<XStateModel>({
    name: 'x',
    defaults: {
        searchInitData: {
            types: [ { id: 1, imageUrl: '', name: 'd'} ],
        }
    }
})

    @Action(FetchXSearchInitData)
    getSearchInitData({ getState, patchState }: StateContext<XStateModel>) {       this.xService.getXSearchInitData().subscribe(initData => {
            console.log('pre PatchState searchInit', initData);
            patchState({
                searchInitData: initData
            });
        });
    }

компонент:

  @Select(XState.searchInitData)
  searchInitData$: Observable<XSearchInitData>;

  ngOnInit() {
      console.log('ngOnInit');
      this.store.dispatch(new FetchXSearchInitData());
      this.searchInitData$
      .subscribe(
        (result: XSearchInitData) => {
          if (!result) {
            console.log('NULL init data');
            return;
          }
          console.log('initData', result);
        }
      );
...