【问题标题】:Angular Reactive form custom validators doesn't work after form resetAngular Reactive 表单自定义验证器在表单重置后不起作用
【发布时间】:2018-03-14 10:41:47
【问题描述】:

我一直在使用响应式表单,但是现在我在重置它时遇到了一个问题。我的目标是对记录表进行内联 CRUD 操作。

创建表单:

formGroupName.formBuilder.group({
    fieldName: '',
    fieldName1: ''
}, { validator: CustomValidator });

表单重置:

formGroupName.reset({
    fieldName: ['', Validators.required],
    fieldName1: ['', Validators.required]
});

在添加记录时,我会在表格顶部显示一个表单,并且我还执行 this.formGroupName.reset() 函数。然后我重置它并单击添加按钮表单被重置并且 CustomValidator 根本不起作用,而其他验证器(必需)可以正常工作。我已经尝试过用补丁值替换重置。

当我在重置函数之后再次编写用于创建表单的代码时,自定义验证器确实起作用,我觉得这不是正确的解决方案,因为它让我在调用重置函数之前和之后再次编写相同的代码。

请指教。

【问题讨论】:

    标签: angular angular-reactive-forms


    【解决方案1】:

    在 FormReset 上试试这个。为我工作

    formGroupName.reset({
        fieldName: ('',[ Validators.required, CustomerVaidator]),
        fieldName1: ('',[ Validators.required, CustomerVaidator])
    });
    

    【讨论】:

    • 感谢您的回复。毫无疑问,我一定为你工作过。对我来说,它不允许添加“(”和“)”。我尝试使用方括号和结尾 formGroupName.reset({ fieldName: ['', [Validators.required, CustomValidator]}) 。这当我控制台 formGroupName.value.fieldName 它返回一个数组。请指教
    • 您可以在组件constructor(private builder:FormBuilder) { this.buildMyForm(); } 然后buildMyForm() { //build your form here } 中执行类似操作,最后在重置调用重置功能时像这样reset() { this.buildMyForm(); } 这是一种解决方法
    • 欢迎您。但是,如果答案中的解决方案有效,请在可能的情况下投票。我有义务
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多