为什么 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();
}
});
}
}
我是 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();
}
});
}
}