更新模型后,字段上的自定义错误丢失

时间:2018-01-10 07:45:35

标签: javascript angular

我有一个表单字段,我尝试使用.setErrors(..)手动设置自定义错误。它有效。

我正在使用Angular 4.4.6

现在我的用例是我需要清除该字段然后在其上设置错误。我的代码段如下所示:

模板:

 <form #myForm="ngForm">
   <app-somecomponent name="email" [(ngModel)]="email"></app-somecomponent>
 </form>

在我的组件中,我有这个:

export class SomeComponent implements OnInit {
   email: Email
    .....

   // some button in template calls this method passing the form reference
   setEmailEmpty(form: NgForm) {
       this.email = ''; // set email to empty.

       // show error below email field
       (<FormControl>form.controls['email']).setErrors({...})

   }
}

将电子邮件设置为空后,我看不到自定义错误。

但是如果我使用(<FormControl>form.controls['email']).setValue('')将电子邮件设置为空,那么我会看到自定义错误。

我做错了什么?使用setValue('')和直接清除字段有什么区别。

注意:自定义组件实现ControlValueAccessor。

更新

我注意到在设置错误之前等待勾号,如下所示

 this.email = ''; // set email to empty.

 // wait a tick and then show error below email field
 setTimeout(() => {
   (<FormControl>form.controls['email']).setErrors({...})
 }, 0)

0 个答案:

没有答案