如何在 getReducers():ActionReducerMap<fromFeature.State> 中返回 reducer 映射?
Posted
技术标签:
【中文标题】如何在 getReducers():ActionReducerMap<fromFeature.State> 中返回 reducer 映射?【英文标题】:How to return a map of reducers in getReducers(): ActionReducerMap<fromFeature.State>? 【发布时间】:2018-04-02 08:13:33 【问题描述】:我正在尝试在通过 NgRx 功能模块组合状态时注入 功能缩减器。
import NgModule, InjectionToken from '@angular/core';
import StoreModule, ActionReducerMap from '@ngrx/store';
import * as fromFeature from './reducers';
export const FEATURE_REDUCER_TOKEN = new InjectionToken<ActionReducerMap<fromFeature.State>>('Feature Reducers');
我应该在这里返回什么?
export function getReducers(): ActionReducerMap<fromFeature.State>
// map of reducers
return
;
我试过了
export function getReducers(): ActionReducerMap<fromFeature.State>
// map of reducers
return
reducerA: FeatureAReducer
;
但它给出了错误对象字面量只能指定已知属性。
其余模块代码:
@NgModule(
imports: [
StoreModule.forFeature('feature', FEATURE_REDUCER_TOKEN),
],
providers: [
provide: FEATURE_REDUCER_TOKEN,
useFactory: getReducers
]
)
export class FeatureModule
【问题讨论】:
您是否计划基于该功能拥有多个StoreModule
?
我有多个特性和他们自己的减速器。
@vulp 你的问题已经有一段时间了,但我很感兴趣你为什么要注入减速器?其背后的意图/原因是什么?如果你能把它弄清楚就好了(不幸的是,我在互联网上找不到任何东西,所以我正在寻找可以向我解释的开发人员)。提前致谢。
【参考方案1】:
我认为每个reducer,无论是root还是feature reducer,都会返回一个新的状态对象。但实际上并没有。特征 reducer 的作用是只返回它更新的状态段。
来自ngrx/platform/example-app:
我们将每个reducer 视为数据库中的一个表。这意味着我们的 ***状态接口只是内部状态类型的键映射。
【讨论】:
以上是关于如何在 getReducers():ActionReducerMap<fromFeature.State> 中返回 reducer 映射?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我为方法'ActionResult DisplaySearchResults()的不可空类型'System.Int32'的参数'CarLotID'获得空条目