html - 尝试实现动作减速器时出现角度ngrx抛出错误
问题描述
反动作.ts
import { createAction } from "@ngrx/store";
export const increment = createAction('[Counter Component] Increment');
export const decrement = createAction('[Counter Component] Decrement');
export const reset = createAction('[Counter Component] Reset');
counter.reducer.ts
import { createReducer, on } from "@ngrx/store";
import { increment, decrement, reset } from "./counter.actions";
export const initialState = 0;
const _counterReducer = createReducer(
initialState,
on(increment, (state) => state + 1),
on(decrement, (state) => state - 1),
on(reset, (state) => 0)
);
export function counterReducer(state, action) {
return _counterReducer(state, action);
}
app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { StoreModule } from '@ngrx/store';
import { counterReducer } from "./counter.reducer";
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
StoreModule.forRoot({ count: counterReducer })
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
输出 16 StoreModule.forRoot({ count: counterReducer }) ~~~~~ 错误:src/app/app.module.ts:16:27 - 错误 TS2322: Type '(state: number, action: Action) => number ' 不可分配给类型 'ActionReducer<number, Action>'。参数 'state' 和 'state' 的类型不兼容。输入'号码 | undefined' 不可分配给类型 'number'。类型“未定义”不可分配给类型“数字”。
16 StoreModule.forRoot({ count: counterReducer })
~~~~~
Error: src/app/counter.reducer.ts:14:32 - error TS7006: Parameter 'state' implicitly has an 'any' type.
14 export function counterReducer(state, action) {
~~~~~
src/app/counter.reducer.ts:14:39 - error TS7006: Parameter 'action' implicitly has an 'any' type.
14 export function counterReducer(state, action) {
解决方案
试试这个只是修复你的初始状态
const _counterReducer = createReducer(
// initialize it
initialState = {count: number} ,
// your accessor need to access the values inside the state
on(increment, (state) => parseInt(state.count)++),
on(decrement, (state) => parseInt(state.count)--),
on(reset, (parseInt(state.count)) => 0)
);
推荐阅读
- r - 编织到 flexdashboard 问题
- java - 需要一个 bean,但在具有 OAuth2 的资源服务器中找到了 2 个
- unix - 我如何删除除unix中每8个字符之外的每个字符
- android - Flutter 在 ListView 中不显示有状态的子 Widget
- python - 如果满足某个条件,如何在 for 循环中停止产生 scrapy spider?
- blazor - Blazor Webassembly:错误 CS0131:赋值的左侧必须是变量、属性或索引器
- python - 关闭时似乎有 6 个泄漏的信号量对象需要清理 warnings.warn('resource_tracker: 似乎有 %d
- api - 计算 Steam 库存值
- integromat - Integromat Watch Google Contacts - 删除操作怎么办?
- android - 如何访问文件夹特定的应用程序android studio