使用 NGXS 的模型方法

Model methods with NGXS

我开始将 NGXS 集成到我的 Angular 项目中,但我面临着一些进退两难的问题。

目前,我所有的模型都是 classes,其中还包含处理模型的方法(辅助方法,以及动作)。
我知道使用 NGXS 时,操作不应该在模型对象中,而应该移至 actions/states 文件。
但是,我不确定如何使用其他方法。

一方面,将它们放在服务中似乎是人为的,因为服务主要用于 CRUD 操作。此外,我能找到的关于 Angular 的每个不包含 NGXS 的教程都提倡使用模型 classes 来封装模型的功能。

另一方面,到目前为止我看到的所有 NGXS 示例都只使用接口作为模型。

这是一个示例模型 class:

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; 
    }
}

这种模型的接口是:

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

在使用 NGXS(例如 isAdult())时,是否有一些关于如何处理模型相关方法的标准方法,或者 possible/advisable 是否使用模型 [=33] =]与 NGXS 一起?

简短的回答是对状态模型使用 interface/object 文字。 如果你想要一个更丰富的模型,你可以使用 Selector.

从状态中存储的内容进行转换

Here 是对 类 或 NGXS Github 页面上的接口的讨论。它还显示了一些建议的解决方法选项。