angular - 在带有 TypeScript 的 Angular 2 中使用装饰器进行验证

标签 angular typescript angular2-forms

我正在开发一个项目,我将 Angular 2 和 NodeJS 与 TypeScript 结合使用。

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

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

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

我想这样做:

class Hero {
    id: number;

    @Required
    name: string;
}

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

最佳答案

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

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

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

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

关于angular - 在带有 TypeScript 的 Angular 2 中使用装饰器进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34003985/

相关文章:

javascript - 切换菜单在导航栏 Angular 2 内关闭

angular - 我想在我的 Angular Web 应用程序中使用 Azure 应用服务 'Application settings' 变量

TypeScript 代码编织

angularjs - 在模型驱动表单(响应式(Reactive))中将值设置为 ngtypeahead

angular - Angular 2 异步验证器数组 : async validator always returns validation error 的问题

Angular 7 react 形式绑定(bind)拦截

使用@ViewChildren 的 Angular 5 访问 div 列表

css - 样式不适用于子组件

javascript - 为什么 typescript 中没有点击按钮?

Typescript指定返回或函数类型不一样