Как рассчитать свойства по состоянию? - PullRequest
0 голосов
/ 07 июня 2019

Используя NGXS, у меня есть состояние в моем проекте. Я использую сервис для загрузки некоторых данных в состояние. Все работает хорошо. Однако мне также нужно предоставить свойство, которое получает данные из другого свойства в состоянии и преобразует его. Я хочу использовать .pipe, чтобы обеспечить синхронизацию преобразованных данных с реальными данными. Я просто не могу понять, куда поместить эту логику преобразования.

1 Ответ

1 голос
/ 10 июня 2019

Вы можете использовать @Selector для проецирования производного свойства на основе вашей модели состояния, например:

export interface MyStateModel {
  firstName: string;
  lastName: string;
}

@State<MyStateModel>()
export class MyState {

  // Selector to project derived 'fullName' property of the state.
  @Selector()
  static fullName(state: MyStateModel): string { 
     return state.firstName + ' ' + state.lastName;
  }

  // Load the data 
  @Action(LoadData)
  loadData({patchState}: StateContext<MyStateModel>) { 
     patchState({
       firstName: 'Joe',
       lastName: 'Bloggs',
     }
  }

}

Затем в вашем компоненте используйте этот селектор напрямую:

@Select(MyState.fullName) fullName$: Observable<string>;
...