目前,我正在尝试使用新的NgRXcreator功能构建Angular+NgRX 8应用程序。但是,当我为生产构建此应用程序时,出现以下错误:
decorators中不支持函数调用,但在“reducers”中调用了“createReducer”
在开发模式中,根本没有问题
请求减速机如下所示
导出接口状态扩展实体状态<;请求>;{
加载:布尔;
错误:任何;
}
export const initialState=adapter.getInitialState({
加载:false,
错误:null
});
export const reducer=createReducer(
初始状态,
在(RequestsActions.LoadRequestsAccess,(state,{requests})=>;adapter.addAll(requests,{…state,loading:false})上,
在(RequestsActions.loadRequestsFailed,(状态,{error})=>;({…状态,错误,加载:false}))上,
on(RequestsActions.deleteRequestSuccess,(state,{id})=>;adapter.removeOne(id,state))
);
并与其他减缩器一起组成一个index.ts文件
导出常量减缩器={
请求:减速机
// [...]
}
StoreModule与reducers映射一起导入,如下所示
@NgModule({
进口:[
公共模块,
StoreModule.forFeature('requests',reducer),
EffectsModule.forFeature(效果),
// [...]
]
})
导出类RequestsModule{}
你知道发生了什么事吗?谢谢,干杯
您需要将减速器包装为函数调用,如下所示:
const yourReducer=createReducer(
初始状态,
在(RequestsActions.LoadRequestsAccess,(state,{requests})=>;adapter.addAll(requests,{…state,loading:false})上,
在(RequestsActions.loadRequestsFailed,(状态,{error})=>;({…状态,错误,加载:false}))上,
on(RequestsActions.deleteRequestSuccess,(state,{id})=>;adapter.removeOne(id,state))
);
导出函数缩减器(状态:状态|未定义,操作:操作){
返回减速器(状态、动作);
}
见官方文件-
https://ngrx.io/guide/store/reducers#creating-减速器功能