簡體   English   中英

Ngrx state 在 angular 12 中未定義

[英]Ngrx state undefined in angular 12

我正在嘗試將 NGRX redux 庫與 Angular 12 一起使用。應用程序的 state 未定義。

索引.ts

export interface ApplicationState {
  product: ProductState | undefined;
}

export const reducers: ActionReducerMap<ApplicationState> = {
  product: productReducer,
};


export const metaReducers: MetaReducer<ApplicationState>[] = [];

應用模塊.ts

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    AppRoutingModule,
    StoreModule.forRoot(reducers, { metaReducers })
    BrowserAnimationsModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

減速器

export interface ProductState {
  formValidation: FormGroup;
}

export const initialState: ProductState = {
  formValidation: new FormGroup({})
};

export const productReducer: any = (state: ProductState | undefined, incomingAction: Action): ProductState => {
  if (state === undefined) {
    return state;
  }

  const action = incomingAction as KnownAction;
  switch (action.type) {
    case 'FORM_VALIDATION':
      return state;
    default:
      return state;
  }
};

行動

export interface ProductFormValidationAction { type: 'FORM_VALIDATION' }

export type KnownAction = ProductFormValidationAction | any;

 export const ActionCreators = {
  formValidation: () => ({ type: 'FORM_VALIDATION' } as ProductFormValidationAction)
};

應用程序的 state 在減速器調用中未定義,不太確定可能是主要問題。

調度方式

import {ActionCreators, GetUsers} from '../../store/action/product.actions'
constructor(
    private store: Store<ApplicationState>
    ) { }

  ngOnInit(): void {
 this.store.dispatch(ActionCreators.formValidation());
  }

您需要將state默認為您的initialState

export const proudctReducer = (state: ProductState = initialState, ...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM