gpt4 book ai didi

angular - 仅订阅 ngrx 商店的一部分

转载 作者:太空狗 更新时间:2023-10-29 19:28:23 26 4
gpt4 key购买 nike

让我的 Ionic/Angular 应用程序中的组件订阅@ngrx 商店的部分时遇到了很多麻烦。

在我的应用程序中,我有一个 index.ts 文件,其中包含:

import * as fromReducer1 from './reducer1';
import * as fromReducer2 from './reducer2';

export interface ApplicationState {
reducer1: fromReducer1.Reducer1State;
reducer2: fromReducer2.Reducer2State;
}

在 reducer1 中我有:

export interface Reducer1State {
products {
items: any[],
prices: any[]
},
filters: any[]
}

和导出函数

export function Reducer1 etc 

在我的组件中,我可以通过这样做愉快地订阅 Reducer 1:

this.store.select('Reducer1')
.subscribe((store: any) => {})

这工作正常,但我想要做的是让我的组件订阅 Reducer1,但获取对 Products 对象的更改,即如果过滤器对象发生更改,那么我对此不感兴趣。或者至少当组件订阅时,它可以检测产品对象是否与上次相同,即使用 DistinctUntilChanged(虽然我无法让它工作)

我该怎么做(我已经搜索并尝试了几件事,但都没有成功)。谢谢!

最佳答案

你可以写内部选择器

// take the whole state reducer
export const reducer2State= (state: State) => state.transactions;
//take inner reducer
export const getInnerState = createSelector(reducer2State,
fromReducer2.something);
// select in component
this.innerReducer = this.store.select(fromRoot.getInnerState );

如果您使用的是 ngrx2,请查看此 example app .如果您使用的是 ngrx4,请查看此 example app

关于angular - 仅订阅 ngrx 商店的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46234302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com