5

我正在开发一个使用 Angular 2 和 NodeJS 和 TypeScript 的项目。

Angular2 使用装饰器来定义组件。我希望能够以相同的方式在域对象上表达验证逻辑。这将很有用,因为我可以第一次表达验证规则并将其用于服务器端和客户端。

而不是像这样在标记中表达必填字段:

<input required [(ng-model)]="selectedHero.name"></input>

我想这样做:

class Hero {
    id: number;

    @Required
    name: string;
}

我试图弄清楚如何编写指令来读取元数据以将所需的属性应用于输入元素以及在 NodeJS 中创建验证错误。任何指导表示赞赏。谢谢您的帮助。

4

1 回答 1

3

问题包括两件事: - 基于装饰器验证模型 - 在 UI 中显示结果

首先,您可以使用任何打字稿验证器。例如类验证器。第二部分我还在想办法。

编辑:在调查之后,我会这样做:对装饰器使用类验证器,使用 angular 2 表单构建器创建一个表单,附加到表单的 valueChanged 事件,在事件中执行验证器并为每个设置您收到的验证错误,相应的 formcontrol 错误。(寻找 setErrors 方法。)

请记住,表单中的任何更改现在都会重新评估所有输入。这可能需要改进。此外,我会将所有逻辑抽象到一个服务中,该服务将提供一个基于 typescript 类的表单并连接所有需要的东西。

于 2016-10-15T07:49:11.063 回答