【发布时间】:2019-07-09 15:36:31
【问题描述】:
我只是尝试验证控件的值是否与 FormArray 中的值匹配。
我想明确一点,我不想验证表单、FormGroup 或 FormArray。这个问题是为了学习如何将参数传递给验证器函数和addValue控件的验证。
这是我的自定义验证服务中的内容:
public form: FormGroup = this.fb.group({
addValue: this.fb.control(null, [this.validatorService.duplicate(this.form.get('values'))]),
values: this.fb.array([])
});
还有验证器功能
public duplicate(values: FormArray): ValidatorFn {
return (control: AbstractControl): { [key: string]: boolean } | null => {
for (let i = 0, j = values.length; i < j; i++ ) {
if (control.value === values[i].value) {
return { 'duplicate': true };
}
}
return null;
};
}
此时我收到一个错误,我使用 FormArray 作为参数添加验证器:
“AbstractControl”类型的参数不可分配给 键入“表单数组”。类型“AbstractControl”缺少以下内容 “FormArray”类型的属性:控件、at、push、insert 和 5 more.ts(2345) (属性) FormGroup.controls: { [键:字符串]:AbstractControl; }
谁能告诉我如何将 FormArray 发送到验证器函数中?
这里是验证器的Stackblitz 没有得到 FormArray
【问题讨论】:
标签: javascript angular validation angular-reactive-forms