【问题标题】:validation touched event is not working with angular 5.2验证触摸事件不适用于 Angular 5.2
【发布时间】:2018-02-01 09:37:28
【问题描述】:

我有一种输入类型,例如:

<input type="text" name="emaill" #emaill="ngModel" pattern="^\w+([\.-]?\w+)@\w+([\.-]?\w+)(\.\w{2,3})+$" [(ngModel)]="user.email" class="form-control input-underline" required />

<div *ngIf="(emaill.invalid && emaill.touched) || (emaill.touched && emaill.pristine)" class="error-block">
        <div [hidden]="!emaill.errors.required">Enter email</div>
        <div [hidden]="!emaill.errors.pattern">Invalid email</div>
       </div>

但似乎touched 事件不起作用,之前使用angular 4.3 进行相同的事件。但是切换到angular 5 后,touched 事件总是错误的。当我像{{emaill.touched}} 一样打印时,它总是即使在触摸输入类型之后也是假的。 此外,如果我将输入类型“文本”更改为“密码”,它工作正常。

【问题讨论】:

  • 输入失去焦点时为真
  • 是的,但它不会变为真。但是对于输入类型“密码”,它会变为真。
  • 它需要对 modl 进行更改才能“触摸”为真。
  • 你能详细说明一下吗,我仍然坚持它。为什么当我更改为 input type="password" 时它会工作?

标签: javascript angular angular5


【解决方案1】:

尚未退出“email.error”触发的错误会阻止该值。检查控制台,你会看到。

为此改变:

   ...
   <div [hidden]="!emaill.errors?.required">Enter email</div>
   <div [hidden]="!emaill.errors?.pattern">Invalid email</div>
   ...

DEMO

【讨论】:

  • 它对我不起作用。控制台中也没有任何错误消息。
  • 在我的演示中点击第二个输入,然后检查控制台
  • 我检查了你的演示,但这个 {{emaill.touched}} 总是错误的。
  • 好,先点击第一个输入再点击第二个
  • 是的,它在您的演示中工作。但在我的代码中同样不起作用:(
猜你喜欢
  • 2015-09-24
  • 2015-04-24
  • 1970-01-01
  • 2011-12-11
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 2023-03-22
  • 2017-03-15
相关资源
最近更新 更多