NGXS повторное использование состояний (расширение классов состояний) - PullRequest
0 голосов
/ 04 июня 2018

Есть вещь, которая называется Композиция.https://ngxs.gitbook.io/ngxs/advanced/composition

И я надеялся, что это позволит мне построить многоразовое состояние для всех моих сеток.Как:

@State<GridStateModel<any>>({
  name: 'basegridstate',
  defaults: {
    total: 0,
    rows: []
  }
})
export class BaseGridState {

  @Action(LoadGridRows)
  loadRows({patchState, dispatch, setState}: StateContext<GridStateModel<any>>) {
    patchState({
      total: 2,
    });
  }

}

А потом я хотел расширить его много раз, как использовать в каждой сетке, чтобы иметь собственные данные.

Как

@State<GridStateModel<Product>>({
  name: 'cataloggrid',
  defaults: {
    total: 0,
    rows: []
  }
})
export class CatalogGridState extends BaseGridState {

  @Action(LoadCatalogRows)
  loadCatalogRows({patchState, dispatch, setState}: StateContext<GridStateModel<any>>) {
    patchState({
      total: 3,
    });
    dispatch(new LoadGridRows());
  }

}

Но проблема заключается в отправкевызовите LoadGridRows для всех других состояний, которые расширяют базовое: (

Есть ли способ заставить его работать только с текущим состоянием? Или, может быть, какой-то другой подход для повторного использования состояний с той же логикой, но с пользовательскими данными?

...