core. js: 6185 ОШИБКА TypeError: Невозможно назначить только для чтения свойство 'ProductCount' объекта '[object Object]' - PullRequest
0 голосов
/ 25 апреля 2020

Я получаю ошибку ниже, когда пытаюсь увеличить количество, используя ngrx store. Я пробовал подобные вопросы на stackoverflow, но это не помогло

, в основном я пытаюсь нажать cartActions.ADD_COUNT, и я получаю сообщение об ошибке как 'core. js: 6185 ОШИБКА TypeError: Невозможно назначить только для чтения свойство' ProductCount ' объекта '[object Object]' '

// Reducer

export function reducer(state: Cart[] = [initialProduct], action: cartActions.actions) {
    console.log(action.payload);
    switch (action.type) {
        case cartActions.ADD_PRODUCT:
            return [...state, action.payload];
            break;
        case cartActions.ADD_COUNT:
            // let count = state[action.payload].ProductCount++
            state[action.payload].ProductCount = state[action.payload].ProductCount++;
            console.log(state);
            return state;
            break;
        case cartActions.SUB_COUNT:
            return state[action.payload].ProductCount = state[action.payload].ProductCount--;
            break;
        default:
            return state;
    }
}

// Action

export const ADD_PRODUCT = '[CART] ADD PRODUCT';
export const ADD_COUNT = '[CART] ADD COUNT';
export const SUB_COUNT = '[CART] SUB COUNT';

export class AddProduct implements Action {
    readonly type = ADD_PRODUCT;
    constructor(public payload: Cart) { }
}

export class AddCount implements Action {
    readonly type = ADD_COUNT;
    constructor(public payload: number) { }
}

export class SubCount implements Action {
    readonly type = SUB_COUNT;
    constructor(public payload: number) { }
}

export type actions = AddProduct | AddCount | SubCount;
<ul *ngFor="let prod of cartList | async; let i = index">
  <li>{{prod.productName}} - {{prod.ProductCount}} <button type="button" (click)="addCount(i)">Add</button> <button
      type="button" (click)="subCount(i)">Remove</button></li>
</ul>
...