如何在具有 null 值的 Angular 选择元素上使用默认的“请选择”选项进行验证?

Posted

技术标签:

【中文标题】如何在具有 null 值的 Angular 选择元素上使用默认的“请选择”选项进行验证?【英文标题】:How to have a default "please select" option on an Angular select element with a null value for validation? 【发布时间】:2018-02-09 02:53:43 【问题描述】:

我在 Angular ngFor 循环中有一个选择 html 元素:

<select formControlName="type" required>
  <option *ngFor="let type of typeList" [ngValue]="type.value"> type.caption </option>
</select>

在 Internet Explorer 中,加载模板时会选择列表中的第一项,但它的值未在表单控件中设置,因此会导致“必需”验证错误,直到在列表中选择另一个值。我想要一个具有空值的“请选择”选项以防止这种情况发生。

这适用于使用或不使用 TypeScript 的 Angular 2+

【问题讨论】:

【参考方案1】:

如果您不使用ngForm,实现所选值的另一种方法是在select 标记中执行类似[value]='selectedType' (change)='selectedType = $event.target.value' 的操作。例如: 在您的 component.ts 中:

public selectedType: string;

在你的component.html中

<select [value]='selectedType' (change)='selectedType = $event.target.value'>
  <option value=''>-- Select your Type --</option>
  <option *ngFor="let type of typeList" [ngValue]="type.value"> type.caption </option>
</select>

【讨论】:

【参考方案2】:

组件.ts

public selectedValue = 'None';

component.html:

    <div ">
        <label>Highlight</label>
        <select [(ngModel)]="selectedTrunk" (change)="onChangeTrunk($event)">
                <option value='None'>None</option>
                <option *ngFor="let trunklist of DRLNameTrunkList" [selected]="trunk" [value]="trunklist.SIPTRUNKNAME">trunklist.SIPTRUNKNAME</option>
             </select>
    </div>

这是我的代码,请根据您的要求修改

【讨论】:

【参考方案3】:

像这样添加一个选项:

   <option [ngValue]="null">Please select</option>

所以你的控件看起来像:

<select formControlName="type" required>
  <option [ngValue]="null">Please select</option>
  <option *ngFor="let type of typeList" [ngValue]="type.value"> type.caption </option>
</select>

这在 Angular 检查 value 属性时起作用,因为方括号。该值变成了一个真正的空值,这与我们使用 value="" 不同(这只是一个空字符串并且不匹配空值)。

【讨论】:

以上是关于如何在具有 null 值的 Angular 选择元素上使用默认的“请选择”选项进行验证?的主要内容,如果未能解决你的问题,请参考以下文章

Angular2:如何使用具有某些组件值的 css calc()?

如何获得带有选择/取消选择所有功能和不确定值的 angular.js 复选框?

Scrum 冲刺博客

具有来自 Web 服务的动态元数据的 Angular 6 元服务

Wordpress 自定义 SQL 以获取三个具有给定元值的帖子

mysql返回最大n个具有相同值的行