Angular 如何根据角度中的falsy值选择默认下拉选项?

Angular 如何根据角度中的falsy值选择默认下拉选项?,angular,angular2-template,Angular,Angular2 Template,在以下模板中,当基础model.militaryStatus属性为null时,“选择军事状态”选项将是选中的选项 选择军事状态 {{status.description}} 问题是,为了选择“选择军事状态”选项,ngModel-绑定字段需要精确地null-不是未定义的,不是空字符串,而是null。如果它们不完全相等,您将得到如下结果,其中没有选择的选项: 当基础组件属性具有任何falsy值时,是否有方法显示给定的选项?这样,无论API返回的是0、未定义的、null,还是空白字符串(所有常见

在以下模板中,当基础
model.militaryStatus
属性为
null
时,“选择军事状态”选项将是选中的选项


选择军事状态
{{status.description}}
问题是,为了选择“选择军事状态”选项,
ngModel
-绑定字段需要精确地
null
-不是
未定义的
,不是空字符串,而是
null
。如果它们不完全相等,您将得到如下结果,其中没有选择的选项:

当基础组件属性具有任何falsy值时,是否有方法显示给定的
选项
?这样,无论API返回的是
0
未定义的
null
,还是空白字符串(所有常见用例取决于场景),都将显示默认选项,而不会出现空白下拉框的中断用户体验


编辑:

对于模板驱动的表单,我这样做了,得到了默认选择

在ts中分配
model.militaryStatus=null


您可以根据
型号的当前值调整第一个选项。军事状态

  • 如果
    model.militaryStatus
    为falsy,则第一个选项的值为
    model.militaryStatus
  • 如果
    model.militaryStatus
    为truthy,则第一个选项的值为
    null

选择军事状态
{{status.description}}

请参阅以获取演示。

虽然这确实有效,但我试图避免必须这样做来“规范化”可能返回空字符串而不是
null的API响应。必须手动将falsy值转换为
null
s,使用类似于
if(!!model.militaryStatus){model.militaryStatus=null;}
的方法,感觉不需要这样做。理想情况下,API响应应在适当时统一返回
null
s,但修改API并不总是一个选项。@JacobStamm您是从API获得默认值还是将此值存储在客户端?在我的情况下,从API,但数据的来源不应如此matter@JacobStamm如果默认值将与其他选项值在同一数据中,我们将确保,默认值将是第一个。我们可以使用反应式表单,并通过FormGroup以编程方式设置默认值
<select [(ngModel)]="model.militaryStatus">
  <option [ngValue]="!model.militaryStatus ? model.militaryStatus : null">Select Military Status</option>
  <option *ngFor="let status of militaryStatuses" [value]="status.id">{{ status.description }}</option>
</select>