0

I am trying to perform insert operation and I am following this article https://angularfirebase.com/lessons/ngrx-entity-feature-modules-tutorial/

Unfortunately instead of adding new object to current state previous one is replaced by new one. Can someone help me with this?

enter image description here

Gif above present behavior of actual code.

action file:

export enum BookingActionTypes {
    TicketAdded = '[Booking API] Ticket Added' 
}

export class TicketAdded implements Action {
    readonly type = BookingActionTypes.TicketAdded;
    constructor(public payload: {orderedTicket: OrderedTicket}) { }
}

export type BookingActions = TicketAdded;

reducer file:

export interface BookingState extends EntityState<OrderedTicket> { }

export const adapter: EntityAdapter<OrderedTicket> = createEntityAdapter<OrderedTicket>();

export const initialBookingState: BookingState = adapter.getInitialState();

export function bookingReducer(state = initialBookingState, action: BookingActions) {
    switch (action.type) {
        case BookingActionTypes.TicketAdded:
            return adapter.addOne(action.payload.orderedTicket, state);

        default: {
            return state;
        }
    }
}
Mateusz Gebroski
  • 1,274
  • 3
  • 26
  • 57
  • I think that is correct. You are in diff tab so it will only show the different between current state and previous state – Tony Ngo Jul 31 '19 at 04:09

1 Answers1

0

This Should work For you... I have updated your reducer....

export function bookingReducer(state = initialBookingState, action: BookingActions) {
    switch (action.type) {
        case BookingActionTypes.TicketAdded:{
            return {
                ...state, {...adapter.addOne, ...action.payload.orderedTicket}
                // this will work like 
                // var test = {data: 1}
                // var test2 = {test: 2}
                // {...test, ...test2} = {data:1,test:2 }
            }
        }
        default: {
            return state;
        }
    }
}
nks
  • 623
  • 1
  • 8
  • 19