NgRx 效果未被调用

问题描述 投票:0回答:0

我最近在我的一个项目中配置了 NgRx,并为一个名为

OrderModel
的特定模型实施了动作、减速器和效果。

但是当我发送一个我配置了要在其上运行的效果的动作时,效果根本不会运行。

有人知道为什么吗?

这是我的

OrderModel

export interface OrderModel {
  orderNumber?: number;
  destination?: LatLngLiteral;
  source?: LatLngLiteral;
  accepted?: boolean;
  sourceAddressText?: string;
  destinationAddressText?: string;
}

以下是动作:

export const addRawOrder = createAction('[Order] Add new orders', props<{orders: OrderModel[]}>());
export const addOrder = createAction('[Order] Add new orders', props<{orders: OrderModel[]}>());
export const setSelectedOrder = createAction('[Order] Set selected order', props<{order: OrderModel}>());
export const setSelectedOrderAccepted = createAction('[Order] Set selected order accepted', props<{order: OrderModel}>());

这里是reducer代码:

import {addOrder, addRawOrder, setSelectedOrder, setSelectedOrderAccepted} from "./order-actions";

export interface OrderState {
  orders: OrderModel[];
  selectedOrder: OrderModel | null;
}


const initialState: OrderState = {orders: [], selectedOrder: null};

export const orderReducers = createReducer(initialState,
  on(addRawOrder, (state, {orders}) => ({...state})),
  on(addOrder, (state, {orders}) => ({...state, orders: [...state.orders, ...orders]})),
  on(setSelectedOrder, (state, {order}) => ({...state, selectedOrder: order})),
  on(setSelectedOrderAccepted, (state, {order}) => ({...state, selectedOrder: {...order, accepted: true}}))
);

效果代码如下:

@Injectable()
export class OrderEffects {

  constructor(private actions$: Actions, private neshanService: NeshanService) {
  }

  getPosts$ = createEffect(() =>
    this.actions$.pipe(
      ofType(addRawOrder),
      switchMap((action) => {
        return this.neshanService.reverseGeocodingSourceDestinationOder(action.orders);
      }),
      map(orders => addOrder({orders: orders}))
    )
  )
}

这是

app.module.ts
的导入部分中的配置:

StoreModule.forRoot({orders: orderReducers}),
EffectsModule.forRoot([OrderEffects]),
angular redux ngrx
© www.soinside.com 2019 - 2024. All rights reserved.