【问题标题】:FormArray validator in Angular 2Angular 2 中的 FormArray 验证器
【发布时间】:2017-03-08 14:47:54
【问题描述】:

我在 Angular 2 中有 4 个 formBuilder - 个人信息 - 地址信息 - 财务信息 - 合作伙伴信息

对于个人、地址和财务,我有一个现成的验证器。

在合作伙伴上,我有 2 个字段:“姓名”和“公司百分比”。 在这部分表单上,我有一个 ArrayForm 来添加多个合作伙伴,代码如下:

this.form4 = this.formBuilder.group({
            cadSocios: [{value: true, disabled: false}],

            socios: this.formBuilder.array([
                this.initSocios(),
            ])

        });


initSocios() {

        // initialize our address
        return this.formBuilder.group({
            nome: ['', Validators.required],
            participacao: ['', [Validators.required,
                Validators.pattern("[0-9]*")]]
        }, {validator: PartValidator.valPart()}));

    }

我有一个自定义验证器来汇总合作伙伴的百分比,它需要是 100%。(valPart())。

但是,我如何访问函数 valPart() 中的数组 portentagem 的值?

valPart() ->

import {FormGroup} from '@angular/forms';

export class PartValidator{
    static valPart(){

        return (group: FormGroup): {[key: string]: any} => {

        //CODE HERE


            return null;
        }//return

    }//valPart

};

【问题讨论】:

    标签: forms validation angular


    【解决方案1】:

    我明白了。 除非在 initSocios() 中调用 valPart(),否则我在 this.form4 中调用它:

    this.form4 = this.formBuilder.group({
                cadSocios: [{value: true, disabled: false}],
    
                socios: this.formBuilder.array([
                    this.initAddress(),
                ])
    
            }, {validator: PartValidator.valPart()});
    

    所以,我可以访问 valPart() 中的值:

       import {FormGroup} from '@angular/forms';
    
    export class PartValidator{
        static valPart(){
    
            return (group: FormGroup): {[key: string]: any} => {
    
               let parts = [];
               let soma = 0;
    
               if(group.get('cadSocios').value == true){
    
                parts.push(group.get('socios').value);
    
                parts[0].forEach((data) => {
            soma += parseInt(data.participacao);
            });
    
    
            if(soma !== 100){
    
                    return {
                        valPart: true
                    }
    
            }//if
    
               }
    
                return null;
            }//return
    
        }//valPart
    
    };
    

    【讨论】:

      猜你喜欢
      • 2017-09-20
      • 2019-04-28
      • 2018-11-21
      • 2018-08-05
      • 2020-03-06
      • 2019-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多