Rxjs 如何在状态上具有计算属性?

Rxjs 如何在状态上具有计算属性?,rxjs,ngxs,Rxjs,Ngxs,使用NGX,我的项目中有状态。我使用服务将一些数据加载到状态。一切都很好。但是,我还需要公开一个属性,该属性从状态的另一个属性获取数据并对其进行转换。我想使用.pipe来确保转换的数据与实际数据保持同步。我只是不知道该将此转换逻辑放在何处。您可以使用@Selector根据您的状态模型投影派生属性,例如: export interface MyStateModel { firstName: string; lastName: string; } @State<MyStateMode

使用NGX,我的项目中有状态。我使用服务将一些数据加载到状态。一切都很好。但是,我还需要公开一个属性,该属性从状态的另一个属性获取数据并对其进行转换。我想使用.pipe来确保转换的数据与实际数据保持同步。我只是不知道该将此转换逻辑放在何处。

您可以使用
@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',
     }
  }

}
导出接口模型{
名字:字符串;
lastName:string;
}
@国家()
导出类MyState{
//项目派生的状态“fullName”属性的选择器。
@选择器()
静态全名(状态:MyStateModel):字符串{
返回state.firstName+“”+state.lastName;
}
//加载数据
@动作(加载数据)
loadData({patchState}:StateContext){
补丁状态({
名字:“乔”,
姓氏:“Bloggs”,
}
}
}
然后在组件中直接使用该选择器:

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

我会将该道具包含在您的状态树中,并使用减速器填充它。