为什么 Angular 验证在 components/Forms 中完成,而不是在域模型上完成一次?

Why is Angular validation done in components/Forms not once on Domain Model?

我是 Angular 的 Grails 背景,您可以在一个地方针对域模型定义业务规则验证。 GORM.... 所以当我通过 Ionic 来到 Angular 时,我很惊讶没有看到一些熟悉的东西。我在这里错过了什么吗?有没有更好的方法?

您可以在任何情况下实施验证。只需在 angular 表单和您的域之间再添加一层。 通常,Angular 并不规定您的应用程序应该以何种方式工作。它只是为您提供与浏览器和 API 交互的工具。

您始终可以通过 Reactive Forms 实现 Domain#valid() 方法和更新字段。

@Component({})
export class MyComponent implements OnInit{

    public form: Form = this.fb.group({
        fName: ['', []],
        lName: ['', []]
    });

    constructor(fb: FormBuilder){}

    ngOnInit(){
        this.form.valueChanges.subscribe((form) => {
            let entity: Entity = new Entity(form);
            let errors: ValidationErrors = entity.valid();
            if(errors.length){
                this.form.setErrors(errors);
                this.form.updateValueAndValidity();
            }
        });
    }
}