我想定义一个特征存储,它将存储中的状态作为输入(或引用),该状态使用/消耗存储,例如ngrx 信号特征存储的父级。
例如,我有一个名为“withCounters()”的商店,其中包含一个名为“counterA”、类型为“number”的“状态变量”。我想添加一个可以访问这些状态变量的特征存储。
export function withCounters() {
withState({
counterA: 0
}),
withDecrement(state)
}
“withDecrement”功能应该能够访问其消费者状态,例如“counterA”变量。
export function withDecrement(consumerState: NgRxParentStore) {
return signalStoreFeature(
withMethods((consumerState) => ({
logState() {
console.log(consumerState);
},
decrement(key: keyof consumerState) {
patchState(consumerState, {key: consumerState[key]-1});
}
}))
)
}
这可行吗?如果是,怎么办?我的主要问题是如何访问消费者的商店状态?
如果不耦合商店,直接访问似乎是不可能的。
ngrx 团队建议使用包装函数:https://github.com/ngrx/platform/issues/4340
在此处阅读完整线程:
带有包装函数的工作示例:https://stackblitz.com/edit/ngrx-signal-store-starter-z3q5i5?file=src%2Fmain.ts
由于耦合而无法工作的示例:https://stackblitz.com/edit/ngrx-signal-store-starter-23tsna?file=src%2Fmain.ts