Angular Signal能否触发重复值的事件通知?
Angular Signal 能否发射重复值的通知?
Angular Signal 默认只会在**值发生严格变化(通过===判断)**时,才会通知订阅者。这就是你修改代码后控制台没有日志的原因:
- 原代码
this.count.update((c) => c + 1)生成了新值,触发了订阅通知; - 修改为
this.count.update((c) => c + 0)后,新值和旧值完全相等,Signal 判定没有变化,因此不会触发任何订阅回调。
如果你的业务场景确实需要在设置相同值时也触发通知,可以通过自定义equal比较函数来实现。在update或set方法的第二个参数中传入配置对象,将equal设为始终返回false的函数,这样无论值是否重复,都会强制触发通知:
// 使用update方法强制触发重复值通知 this.count.update((c) => c + 0, { equal: () => false }); // 或者用set方法直接设置当前值并强制通知 const currentVal = this.count(); this.count.set(currentVal, { equal: () => false });
简单总结:
- 默认规则:Signal 只在值严格改变时发送通知;
- 按需调整:通过
equal配置可以打破这个限制,实现重复值的通知触发。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

