布尔类型的ngrx

问题描述

我在Ngrx中拥有一个布尔数据状态:

export interface MyState {
    success?: boolean;
}

const initialState: MyState = { };

export const success = createSelector(myFeatureSelector,state => state.success);

因此,如果我执行以下操作:

myStateStore.select(success).subscribe(success => {
    // this will only emit if the state changes
});

所以说,如果我依次调度2个动作,并且两个动作都将状态设置为true,则只有第一个动作会发出成功值,而第二个动作将不会成功,因为该值未更改。有没有办法发出信号?

解决方法

您可能想将changeCount属性添加到您的状态(每次更改(或成功)都会增加该属性

export interface MyState {
  success?: boolean;
  changeCount: number;
}

然后按如下所示更改代码:

this.myStateStore
.pipe(
  select(changeCount),mergeMapTo(this.myStateStore.select(success))
)
.subscribe(success => {
 
});
,

重要的是要理解为什么selectors不返回值。选择器为Memoized,如果值不变,则不执行。 有一种方法可以跳过memoization

myStateStore.select(success).subscribe(success => {
    // this will only emit if the state changes
});

success.release(); // This will force the selector to not memoized.

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...