【问题标题】:How to separate 'Implemented Conditional Validation Service/Function' in Angular-8 while using Reactive-Forms如何在使用 Reactive-Forms 时在 Angular-8 中分离“实现的条件验证服务/功能”
【发布时间】:2019-12-18 15:04:20
【问题描述】:

我在我的组件中实现了条件验证。 我正在尝试将验证逻辑从我的组件分离到另一个组件/服务。

演示链接:http://StackBlitz%20https://stackblitz.com/edit/angular-amr86r

【问题讨论】:

    标签: angular-reactive-forms angular2-form-validation angular-custom-validators


    【解决方案1】:

    您可以使用 @rxweb/reactive-form-validators 轻松应用条件验证。我已经通过验证器和基于装饰器的方法应用了所需的验证。请参考working 示例。

    使用基于装饰器的方法:

    您只需要将 @required() 装饰器与您想在模型属性上应用的条件一起应用。

    这是完整的模型代码:

    import {  required } from   "@rxweb/reactive-form-validators"   
    
    export class UserInfo {
    
        @required() 
        firstName: string;
    
        @required({conditionalExpression:'x => x.firstName == "Bharat"' }) 
        lastName: string;
    
    }
    

    使用基于验证器的方法:

    对于基于验证器的方法,您只需提及 RxwebValidators.required() 以及您要在表单控件上应用的条件。

    这是完整的组件代码:

    import { Component, OnInit } from '@angular/core';
    import { FormGroup, FormBuilder } from "@angular/forms"
    import { RxwebValidators } from '@rxweb/reactive-form-validators';
    
    @Component({
        selector: 'app-validator-based-validator',
        templateUrl: './validator-based.component.html'
    })
    export class ValidatorBasedValidationComponent implements OnInit {
        validatorBasedFormGroup: FormGroup
    
        constructor(
            private formBuilder: FormBuilder )
        { }
    
        ngOnInit() {
            this.validatorBasedFormGroup = this.formBuilder.group({
                firstName:['', RxwebValidators.required()],
                lastName:['', RxwebValidators.required({conditionalExpression:'x => x.firstName == "Bharat"' })]
            });
        }
    }
    

    注意:如果您将使用验证器方法,您可以在单独的文件中创建一个函数,并在条件表达式属性中使用相应的函数。无论如何,模型文件将以基于装饰器的方法进行分离。

    【讨论】:

    • 谢谢。我将尝试实施,看看两者中哪一个更适合我的情况,并给出适当的反馈。
    猜你喜欢
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    相关资源
    最近更新 更多