我有此代码:
<form #userForm="ngForm" (ngSubmit)="save(userForm)">
<input type="email" #contactEmail="ngModel" email minlength="2" [(ngModel)]="contactInformation.email" class="form-control" id="contactEmail" name="contactEmail" aria-describedby="emailHelp" placeholder="Enter email">
<div *ngIf="contactEmail.invalid">
Please input a valid email
</div>
<button type="submit" class="btn btn-primary">Send</button>
</form>
加载此代码后,contactEmail设置为有效且原始,并且不显示错误消息。我要满足以下两个条件:
我该怎么做?
编辑:我已经得到2个答案,没有一个女巫像预期的那样工作,这是一个演示示例的stackBlitz:
https://stackblitz.com/edit/angular-wwttsr
预期的行为是在加载时显示错误消息,并且已填写占位符。
答案 0 :(得分:0)
只需尝试在您的ts中添加contactInformation.email = ""
-这将使您的值成为空字符串-而如果值不是null
,则将进行表单验证,请不要绑定null
到初始加载时的值
希望这可以解决您的问题-编码愉快!!
更新
我对您的*ngIf
条件做了一些更改,将您的占位符保留在input
文本上
<form #f="ngForm">
<input type="text" minlength="10" [(ngModel)]="coumnNameModel" name="coumnName" #coumnName="ngModel" email placeholder="please write">
</form>
<small *ngIf="coumnNameModel != null && coumnNameModel.length <= 10">
Field needs 10 characters
</small>
<small *ngIf="coumnName.invalid && coumnNameModel.length > 10">
Enter a valid email
</small>
<button (click)="setRequired()">Set field as required</button>
将coumnNameModel
声明为coumnNameModel = ""
只是空字符串,并读取字符串的长度以显示错误消息-我添加了几对验证,用于检查初始加载以及输入是否为valid
请检查并让我知道它是否无效-这会使您的占位符在初始加载时完好无损
希望这能奏效,我已经检查了您的来源表格
答案 1 :(得分:0)
原来,我的代码有一个非常微妙的错误。不需要设置电子邮件和最小长度验证。因此,仅需设置即可解决所有问题。
<form #userForm="ngForm" (ngSubmit)="save(userForm)">
<input type="email" #contactEmail="ngModel" email minlength="2" required [(ngModel)]="contactInformation.email" class="form-control" id="contactEmail" name="contactEmail" aria-describedby="emailHelp" placeholder="Enter email">
<div *ngIf="contactEmail.invalid">
Please input a valid email
</div>
<button type="submit" class="btn btn-primary">Send</button>
</form>