【问题标题】:Custom Validator throw error upon resetting reactive form in angular 2自定义验证器在以角度 2 重置反应形式时抛出错误
【发布时间】:2018-03-19 00:10:53
【问题描述】:

我有一个角度为 2 的数据驱动表单。 在其中一个控件中,我有一个自定义验证器。 如果我在使用 this.myForm.reset() 时应用了验证器的控件具有某些值,则验证器会崩溃并引发错误。

如果我没有在任何地方使用this.myForm.reset() 方法,自定义验证器就可以很好地工作!

自定义验证器使用 npm 在 angular 组件中安装的包。 验证器如下:

phoneNumberValidator (control: FormControl): {[s: string]: boolean} {
   if (!validator.isMobilePhone((<string>control.value), 'en-IN')) {
     return {phoneNumberValidator: true};
   }
   return null;
}

我使用的验证器如下:

'phoneNumber': new FormControl('', [
     Validators.required,
     Validators.maxLength(14),
     this.phoneNumberValidator
])

错误信息:

正如我所提到的,验证器在没有 myform.reset() 的情况下工作正常 我使用的 npm 包是this

我尝试使用 ngForm,但我猜它是用于模板驱动的表单。

【问题讨论】:

    标签: javascript angular validation


    【解决方案1】:

    您正在使用的phoneNumberValidator 插件似乎需要phoneNumber 控件至少应该有空字符串。因此,您在重置表单时将该值设置为空字符串。

    this.myForm.reset({'phoneNumber': ''})
    //OR
    //this.myForm.resetForm({'phoneNumber': ''})
    

    【讨论】:

    猜你喜欢
    • 2018-04-02
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    相关资源
    最近更新 更多