Модельные методы с NGXS - PullRequest
       13

Модельные методы с NGXS

0 голосов
/ 16 марта 2019

Я начинаю интегрировать NGXS в свой проект Angular, и передо мной стоит небольшая дилемма.

В настоящее время все мои модели являются классами, которые также содержат методы, которые имеют дело с моделью (вспомогательные методы, а также действия).
Мне известно о том, что с NGXS действия должныне находиться в объектах модели и должен перемещаться в файлы действий / состояний.
Однако я не уверен, что делать с другими методами.

С одной стороны, размещая их внутри сервисовкажется искусственным, так как сервисы используются в основном для операций CRUD.Более того, каждый учебник по Angular, который не включает в себя NGXS, пропагандирует использование классов моделей, инкапсулирующих функциональность модели.

С другой стороны, все примеры NGXS, которые я видел до сих пор, используют только интерфейсы в качестве моделей.

Вот пример класса модели:

export class Person {

    static readonly ADULT_TIME = 18 * 365 * 24 * 60 * 60 * 1000;

    name: string;
    dateOfBirth: Date;

    constructor(name: string, dateOfBirth: Date) {
        this.name = name;
        this.dateOfBirth = dateOfBirth;
    }

    public isAdult(): boolean {
        return (Date.now() - this.dateOfBirth.getTime()) >= Person.ADULT_TIME; 
    }
}

Anинтерфейс такой модели будет выглядеть следующим образом:

export interface Person {
    name: string;
    dateOfBirth: Date;
}

Существует ли какой-то стандартный подход к тому, что делать с методами, связанными с моделью, при работе с NGXS (например, isAdult()), или, альтернативно, возможно ли это /желательно работать с модельными классами вместе с NGXS?

1 Ответ

2 голосов
/ 20 марта 2019

Краткий ответ - использовать литералы интерфейса / объекта для модели состояния.Если вы хотите более богатую модель, вы можете преобразовать из того, что хранится в состоянии, используя Selector.

Здесь - это обсуждение классов или интерфейсов на странице NGXS Github.Также показаны некоторые предлагаемые варианты обхода проблемы.

...