Angular 为什么在组件/表单中进行角度验证,而不是在域模型上进行一次?
我是从Grails的背景开始学习Angular的,您可以在一个地方根据域模型定义业务规则验证。戈姆。。。。所以,当我谈到角度,通过离子,我很惊讶没有看到一些熟悉的东西。我是不是遗漏了什么?有更好的方法吗?您可以在任何情况下实施验证。只需在角形和域之间再添加一层。 一般来说,Angular并不决定应用程序的工作方式。它只提供与浏览器和API交互的工具 您始终可以实现Angular 为什么在组件/表单中进行角度验证,而不是在域模型上进行一次?,angular,validation,business-rules,domain-model,Angular,Validation,Business Rules,Domain Model,我是从Grails的背景开始学习Angular的,您可以在一个地方根据域模型定义业务规则验证。戈姆。。。。所以,当我谈到角度,通过离子,我很惊讶没有看到一些熟悉的东西。我是不是遗漏了什么?有更好的方法吗?您可以在任何情况下实施验证。只需在角形和域之间再添加一层。 一般来说,Angular并不决定应用程序的工作方式。它只提供与浏览器和API交互的工具 您始终可以实现域#valid()方法,并通过反应式表单更新字段 @Component({}) export class MyComponent im
域#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();
}
});
}
}
Grails不是Java web框架吗?我看不到Java世界和Javascript世界之间的任何关系——或者我遗漏了什么——好吧,我要强调的是,验证的分散性导致了重复工作。你也可以让组件1和组件2有不同的规则,比如1有a,b,c,2有a,b,d。导致混乱。是的,Grails是一个完整的堆栈框架,它的封面下是Java/Spring/Hibernate..Entity/EntityError-这些是什么?我从这里理解updateValueAndValidity,这只是伪代码。Entity—您自己的类,可以是
类UserEntity实现IEntity{}
,其中接口IEntity{valid():EntityError[];}
EntityError
同样只是抽象/接口,可以提供给Angular的表单setErrors()
方法。哦,更新了代码示例,因为我在那里输入了错别字。好的,谢谢。对其他人来说,这是-回想起来,我认为这失败的地方在于缺乏以通用方式轻松地进行存在性检查,或者在引用约束的末尾进行基数(0,1,n)检查。在这方面,GORM是一个远远优越的解决方案。