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

<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事件始终为false。当我打印为{{emaill.touched}}时,即使经过触摸输入类型。
另外,如果我将输入类型“ text”更改为“ password”,则可以正常工作。

最佳答案

尚未退出“ emaill.error”而触发的错误将阻止该值。检查控制台,您将看到。

为此更改:

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


DEMO

10-08 13:24