html - 默认值设置为“0”时的角度下拉验证
问题描述
我已将“选择”的默认值设置为下拉菜单的“0”。
验证规则
1.根据需要选择下拉菜单。(至少从下拉菜单中选择一个选项)。
2.如果未选择某个值,则显示错误消息“您需要选择一个选项”
我尝试过的事情:
情况1:
HTML:
<div class="col-12 col-md-6 col-lg-4">
<div class="form-group">
<span class="plain-select">
<select class="form-control" id="select101" formControlName="UserId"
[(ngModel)]="editFormData.userId">
*****<option value='0' selected>Select</option>*****
<option *ngFor="let user of usernames" value={{user.userId}}>
{{user.usernames}}
</option>
</select>
</span>
<div
*ngIf="addUserForm.controls['UserId'].invalid && (submited || ` addUserForm.controls['UserId'].dirty || addUserForm.controls['UserId'].touched)"`
class="error-msg">
<div *ngIf="addUserForm.controls['UserId'].errors.required">
UserId is required.
</div>
</div>
</div>
</div>
TypeScript:
UserId: ['', [Validators.required, Validators.min(1)]],
**在上述情况下:
I am able to see the default as "Select" but the validation doesn't work.
当没有从下拉列表中选择任何选项时,它不会给出任何验证错误。
案例2:
<div class="col-12 col-md-6 col-lg-4">
<div class="form-group">
<span class="plain-select">
<select class="form-control" id="select101" formControlName="UserId"
[(ngModel)]="editFormData.UserId">
<option value='null' selected>Select</option>
<option *ngFor="let user of usernames" value={{user.userId}}>
{{user.usernames}}
</option>
</select>
</span>
<div
*ngIf="addUserForm.controls['UserId'].invalid && (submited || addUserForm.controls['UserId'].dirty || addUserForm.controls['UserId'].touched)"
class="error-msg">
<div *ngIf="addUserForm.controls['UserId'].errors.required">
UserId is required.
</div>
</div>
</div>
</div>
TypeScript:
UserId: ['', [Validators.required, Validators.min(1)]],
In the above case, the validation is working as expected but however the default value is not set to "Select" and also the validation works only if "Select" option is selected from the dropdown
Case-3:
Same happens when i select the value to "undefined".
解决方案
使其工作的一种可能方法是ngValue
用于数据绑定
<option [ngValue]="null" selected>Select</option>
<option *ngFor="let user of usernames" [ngValue]="user.userId">
{{user.username}} - {{user.userId}}
</option>
要显示验证错误(注意?.
可选的链接):
<div *ngIf="frm.controls['UserId'].dirty && frm.controls['UserId']?.errors?.required">
UserId is required.
</div>
推荐阅读
- flutter - 监听颤振的可变变化
- c# - 在第二次迭代中,内部 foreach 循环不会从第二个元素继续
- postgresql - 将列数据拆分为两列并将其插入到 postgresql 中的现有表中
- php - 当在 laravel 中使用 ajax 从下拉列表中选择产品时,如何创建显示产品价格的标签
- python - 从另一个文本文件提供 SFTP 服务器凭据
- python - 有没有一种方法可以从 python 中的多个文本文件中提取多条数据并将其保存为新的 .csv 文件中的一行?
- angular - ionic 4: dateStart 和 dateEnd 有 2 小时的差异
- docker - 如何为我的项目的多个版本共享一个 Dockerfile?
- android - 如何根据导航组件中的片段内的某些条件隐藏向上导航图标?
- single-sign-on - ADFS 登录给出错误 Microsoft.IdentityServer.Web.UnsupportedSamlRequestException