java中字段值重复校验,Angular FormArray - 重复值验证器

我正在使用带反应形式的Angular 6 . 其中一个表单字段是FormArray,它在用户单击“添加”按钮时添加控件 .

在FormArray中,我想检查FormArray中是否已存在FormControl值 .

这可以正常工作,直到用户单击“添加”按钮重置上一个控件错误并将控件标记为有效,尽管它仍然具有重复值 .

这是在窗体数组中添加控件的函数:

onAddIPAddress() {

if (( < FormArray > this.tcpudpAppFormGroup.get('ipaddressArray')).length < 8) {

const control = new FormControl(null, Validators.compose([

Validators.required,

Validators.pattern(this.ipaddressPattern),

this.forbiddenIPs.bind(this),

this.onDuplicateIPFormArray.bind(this)

]));

( < FormArray > this.tcpudpAppFormGroup.get('ipaddressArray')).push(control);

} else {

return;

}

}

然后,这是自定义验证器代码:

onDuplicateIPFormArray(control: FormControl): {

[s: string]: boolean

} {

if (

( < FormArray > this.tcpudpAppFormGroup.get('ipaddressArray')).length > 1 &&

!( < FormArray > this.tcpudpAppFormGroup.get('ipaddressArray')).value.includes(null) &&

( < FormArray > this.tcpudpAppFormGroup.get('ipaddressArray')).value.indexOf(control.value) !== -1)

{

console.log(( < FormArray > this.tcpudpAppFormGroup.get('ipaddressArray')).value.indexOf(control.value));

return {

duplicateIP: true

};

}

return null;

}

从控制台,我可以看到IndexOf值不正确但无法理解原因 .

我有什么想法可以解决这个问题?

谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值