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