在角度2

时间:2017-10-07 08:52:15

标签: javascript angular validation

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

如果我没有在任何地方使用this.myForm.reset()方法,那么自定义验证器的效果非常好!

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

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
])

错误讯息:Error message

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

我尝试过使用ngForm,但我想这是针对模板驱动的表单。

1 个答案:

答案 0 :(得分:2)

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

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