ngrx: установить значение по умолчанию для сущностей

Как я могу установить значение по умолчанию для сущностей при инициации состояния в сущностях ngrx?

potato.model.ts

export class Potato {
    id: number;
    weight: number;
}

potato.reducer.ts

export interface PotatoState extends EntityState<Potato> { }

export const potatoAdapter: EntityAdapter<Potato> = createEntityAdapter<Potato>();

const potatoesInitialState: PotatoState = potatoAdapter.getInitialState();

export const initialState: State = {
    potatoes: potatoesInitialState
};

export function reducer(state = initialState, action: PotatoActions): State {
    switch (action.type) {
        // ...
    }
}

Например мне нужно установить значение по умолчанию 0,2.

2 ответа

Решение

Я бы предложил вам использовать конструктор по умолчанию для этого:

export class Potato {
    id: number;
    weight: number;

    constructor() {
        weight = 0.2;
    }
}

Вы не должны добавлять классы в хранилище, чтобы поддерживать его сериализацию, хорошо, ваша картошка есть, но заманчиво добавить туда функции, которые существуют, а потом их больше нет.

Я бы использовал фабричную функцию для создания картофеля вместо этого.

interface Potato {
  id: number;
  weight: number;
}

const createPotato = (potato: Potato = { id: undefined, weight: 0.2 }) => potato;

console.log(createPotato());
console.log(createPotato({id: 20, weight: 300}));

Другие вопросы по тегам