Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 为什么在组件/表单中进行角度验证,而不是在域模型上进行一次?_Angular_Validation_Business Rules_Domain Model - Fatal编程技术网

Angular 为什么在组件/表单中进行角度验证,而不是在域模型上进行一次?

Angular 为什么在组件/表单中进行角度验证,而不是在域模型上进行一次?,angular,validation,business-rules,domain-model,Angular,Validation,Business Rules,Domain Model,我是从Grails的背景开始学习Angular的,您可以在一个地方根据域模型定义业务规则验证。戈姆。。。。所以,当我谈到角度,通过离子,我很惊讶没有看到一些熟悉的东西。我是不是遗漏了什么?有更好的方法吗?您可以在任何情况下实施验证。只需在角形和域之间再添加一层。 一般来说,Angular并不决定应用程序的工作方式。它只提供与浏览器和API交互的工具 您始终可以实现域#valid()方法,并通过反应式表单更新字段 @Component({}) export class MyComponent im

我是从Grails的背景开始学习Angular的,您可以在一个地方根据域模型定义业务规则验证。戈姆。。。。所以,当我谈到角度,通过离子,我很惊讶没有看到一些熟悉的东西。我是不是遗漏了什么?有更好的方法吗?

您可以在任何情况下实施验证。只需在角形和域之间再添加一层。 一般来说,Angular并不决定应用程序的工作方式。它只提供与浏览器和API交互的工具

您始终可以实现
域#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是一个远远优越的解决方案。