如何解决angular2 formGroup 的唯一值验证器
我正在使用 Angular Reactive formsGroup 和 formControl。我的要求是每个 formControl 的值应该是唯一的,如果用户尝试添加重复的值,那么它应该显示验证错误。
表单组创建
this.contryCodeForm = this.formBuilder.group({
US: ['+1',[],[this.uniqueValidator,Validators.required]],UK: ['+44',India: ['+91',email: ['+61',Validators.required]]
});]
如果有人试图编辑其他国家/地区已经采用的值,我想添加验证。
我已经尝试实现 this.uniqueValidator
const values = Object.keys(formGroup.value).map(key => formGroup.value[key])
const filtered = values.filter(x=>x === control.value);
if (filtered.length > 1) {
return {message: "This field must be unique value"}
}
但它不起作用
感谢任何帮助
解决方法
我认为你应该这样做:
- 创建验证器,它采用 formGroup
export class MyOwnValidator {
static checkDuplicates(formGroup: FormGroup): ValidationErrors | null {
//here you can get access to all controls
and implement the logic for checking duplicates
}
}
- 在 formGroup 中添加这个验证器
this.contryCodeForm = this.formBuilder.group({
US: ['+1',[],[ Validators.required]],UK: ['+44',India: ['+91',[Validators.required]],email: ['+61',[Validators.required]]
},{
validators: MyOwnValidator.checkDuplicates
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。