我正在设置非常基本的Ngrx状态管理。
# app.module
StoreModule.forRoot(reducers),
此代码是使用Ngrx原理图生成器生成的。
export const reducers: ActionReducerMap<State> = {
[fromFilter.filterFeatureKey]: fromFilter.reducer
};
哪个给我错误
Expression form not supported in 'reducers'
我已经尝试过在Ngrx github页面上找到的内容。这不会产生任何错误,但只会无声地起作用,不会生成任何状态。
export function reducers(state: State | undefined, action: Action) {
return combineReducers(_reducers)(state, action);
}
我可以通过对过滤器键进行硬编码来使其工作,但是根据文档,这不是推荐的做法。
export const reducers: ActionReducerMap<State> = {
filter: fromFilter.reducer
};
答案 0 :(得分:1)
这是目前原理图自动生成的代码的问题。要保留非硬编码的字典版本,请在app.module.ts
中使用注入令牌,例如(从声明中导入reducers
和State
)
export const REDUCER_TOKEN = new InjectionToken<ActionReducerMap<State>>('root reducer');
@NgModule({
declarations: [AppComponent],
imports: [
...
StoreModule.forRoot(REDUCER_TOKEN),
],
providers: [
{ provide: REDUCER_TOKEN, useValue: reducers }
],
bootstrap: [AppComponent]
})
export class AppModule { }
仅在使用提前编译时才会发生此问题,但是由于这是大多数生产版本的默认设置,因此必须使用令牌才能使其正常工作。