我在Angular 2中有4个formBuilder - 个人信息 - 地址信息 - 财务信息 - 合作伙伴信息
for Personal,Adress and Financy我有一个现成的验证器。
在合作伙伴方面,我有两个字段:'姓名'和'公司的百分比'。 在表单的这一部分,我有一个ArrayForm来添加多个合作伙伴,代码如下:
unresolved artifact. Not resolved or indexed.
我有一个自定义验证器来计算合作伙伴的百分比,它需要100%。(valPart())。
但是,如何在de function valPart()中访问数组portentagem的值?
valPart() - >
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()}));
}
答案 0 :(得分:0)
我明白了。 除非在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
};