关键词:
【中文标题】FormArray 字段的角度自定义验证(反应式表单)【英文标题】:Angular custom validation for FormArray fields (Reactive Form) 【发布时间】:2022-01-02 12:57:53 【问题描述】:我是 Angular 新手,想了解如何为 FormArray 执行自定义字段验证?
FormArray 是动态的,您可以在其中推送或删除 FormGroup 项。 FormGroup 由 field1、field2、field3 组成。如果任一字段不为空,则应使用 validators.required 设置其他字段。如果所有字段为空或已填充,则该表单将有效。
谢谢。
下面是代码示例:
formA!: FormGroup;
initializeForm(): void
this.formA = this.fb.group(
item1: this.fb.array([this.createItem1()]),
item2: this.fb.array([this.createItem2()]),
);
createItem1(): FormGroup
return this.fb.group(
field1: null,
field2: null,
field3: null,
);
【问题讨论】:
【参考方案1】:试试这个。
createItem1(): FormGroup
const fg = this.fb.group(
field1: null,
field2: null,
field3: null,
);
const validatorFn = (control: AbstractControl): [key: string]: any | null =>
const obj = fg.getRawValue();
if (obj.field1 || obj.field2 || obj.field3)
return Validators.required(control);
return null;
;
for (const control of Object.values(fg.controls))
control.setValidators(validatorFn);
return fg;
您还需要在按键时为所有控件执行updateValueAndValidity()
。
【讨论】:
嗨,我在尝试此操作时在“fg.controls”遇到了以下问题。可以建议吗?类型 ' [key: string]: AbstractControl; ' 必须有一个返回 iterator.ts(2488) 的 '[Symbol.iterator]()' 方法 修正了我的答案。请再次检查。 您好,感谢您的帮助。我做了一些更改以适应我的用例,并添加了额外的条件以在不需要时清除验证器。总的来说,它最终会奏效。formArray 中的可拖动 formGroups(反应式表单)
】formArray中的可拖动formGroups(反应式表单)【英文标题】:DraggableformGroupsinformArray(reactiveforms)【发布时间】:2019-10-0214:30:59【问题描述】:在角度拖放模块中,他们提供了moveItemInArray()函数的文档,通过使用这个我们只能拖动数... 查看详情
为啥使用自定义全局验证器在角度材料 6 的 mat-form 字段中未显示 mat-error
】为啥使用自定义全局验证器在角度材料6的mat-form字段中未显示mat-error【英文标题】:Whymat-errornotgetdisplayedinsidemat-formfieldinangularmaterial6withcustomglobalvalidators为什么使用自定义全局验证器在角度材料6的mat-form字段中未显示mat-error【... 查看详情
添加新元素时,角度更新现有 FormArray 元素的有效性
】添加新元素时,角度更新现有FormArray元素的有效性【英文标题】:AngularupdatesvalidityofexistingFormArrayelementswhennewelementisadded【发布时间】:2018-12-1118:28:03【问题描述】:我不想要这个。因为我正在异步验证FormArray的每个元素,所... 查看详情
数字输入的角度自定义指令需要访问父反应表单 - FormGroup 和 FormContols
】数字输入的角度自定义指令需要访问父反应表单-FormGroup和FormContols【英文标题】:Angularcustomdirectiveonnumberinputneedsaccesstoparentreactiveform-FormGroupandFormContols【发布时间】:2022-01-0314:47:01【问题描述】:我编写了一个Angular自定义指... 查看详情
Angular 反应式表单自定义控件异步验证
】Angular反应式表单自定义控件异步验证【英文标题】:Angularreactiveformcustomcontrolasyncvalidation【发布时间】:2020-04-0608:48:11【问题描述】:更新:异步验证问题已成功解决。但是初始验证状态还有另一个问题。查看最新答案。诀窍... 查看详情
如何使用角度验证自定义验证模式中的文本
】如何使用角度验证自定义验证模式中的文本【英文标题】:howtovalidatetextincustomvalidatepatternsusingangular【发布时间】:2019-03-3020:05:01【问题描述】:我想仅使用此模式~*\\|:"<>?/验证文本。下面是我的文本框<inputtype... 查看详情
如何根据先前的字段输入角度更改验证
】如何根据先前的字段输入角度更改验证【英文标题】:HowcanIchangethevalidationsbasedonpreviousfieldinputangular【发布时间】:2022-01-2202:49:45【问题描述】:我有两个角度反应形式的字段。我需要验证第二个字段并根据选择的第一个字段... 查看详情
来自自定义表的 Spring Security 身份验证
...功能,但我的要求有点不同。我有一张桌子:1.Employee(字段ename,epassword)我想从这个表中验证用户,但使用springsecurity。我知道Spri 查看详情
Angular 反应式表单自定义验证器。仅在选中复选框时启用验证
】Angular反应式表单自定义验证器。仅在选中复选框时启用验证【英文标题】:Angularreactiveformscustomvalidator.EnableValidationonlywhencheckboxchecked【发布时间】:2019-02-2110:27:50【问题描述】:我在验证仅标记的复选框时遇到问题。首先,... 查看详情
日期选择器的 Kendo 自定义验证
...从下拉列表中选择日期时才有效。如果在datepicker的输入字段中键入日期,则最小 查看详情
以角度形式为文件上传设置自定义验证未按预期工作
】以角度形式为文件上传设置自定义验证未按预期工作【英文标题】:SetCustomValidationforFileUploadinangularFormisnotworkingasexpected【发布时间】:2022-01-2020:56:51【问题描述】:我想实现上传pdf文件验证。如果上传的pdf文件受密码保护,... 查看详情
嵌套的自定义 FormArray 组件不与具有 FormArrayName 的子表单绑定
】嵌套的自定义FormArray组件不与具有FormArrayName的子表单绑定【英文标题】:nestedcustomFormArraycomponentdoesn\'tbindwithchildformwithFormArrayName【发布时间】:2019-08-2915:51:39【问题描述】:我尝试使用CVA创建2个嵌套表单。问题是当我将第二... 查看详情
角度材料 - mat-error 不显示输入字段的错误消息
...】:2019-05-1100:42:36【问题描述】:场景-带有表单数组的反应式表单。表单中的每个字段都有一个Required验证。表单数组本身具有minlength(1)和maxlength(3)的验证。在表单数组中添加4 查看详情
如何从 FormArray 中查找包含角度错误的表单索引?
】如何从FormArray中查找包含角度错误的表单索引?【英文标题】:HowtofindindexofformfromFormArraythatcontainerrorinangular?【发布时间】:2021-11-1320:43:05【问题描述】:我正在处理一种复杂的角度形式,我需要一些帮助。让我详细解释一下... 查看详情
以角度6动态加载formarray中的多个下拉列表
】以角度6动态加载formarray中的多个下拉列表【英文标题】:Dynamicallyloadmultipledropdowninformarrayinangular6【发布时间】:2019-01-2723:50:36【问题描述】:我想加载两个下拉列表,一个下拉列表基于另一个下拉列表。我正在使用formarray来... 查看详情
WooCommerce 结帐自定义字段条件验证
】WooCommerce结帐自定义字段条件验证【英文标题】:WooCommercecheckoutcustomfieldconditionalvalidation【发布时间】:2021-07-0205:12:33【问题描述】:我想将我的自定义字段保存到新的用户元数据中。我的自定义字段=T.C.金利克没有代码行开... 查看详情
反应形式自定义验证器未在 angular6 中显示错误
】反应形式自定义验证器未在angular6中显示错误【英文标题】:reactiveformcustomvalidatorsnotdisplayingtheerrorinangular6【发布时间】:2018-12-2903:41:19【问题描述】:在这个演示中,我为自定义验证器创建了一个示例表单,在这里,我有Fromd... 查看详情
如何以角度在 FormArray 中设置值?
】如何以角度在FormArray中设置值?【英文标题】:HowtosetvaluesinaFormArrayinangular?【发布时间】:2022-01-0422:43:10【问题描述】:我正在尝试在内部有一个FormArray的FormGroup中输入值,但我遇到了这个数组的问题,因为数据没有被映射我... 查看详情