Angular 如何在括号内使用内联if语句
我想像这样在angular2模板中使用内联if语句Angular 如何在括号内使用内联if语句,angular,angular2-template,Angular,Angular2 Template,我想像这样在angular2模板中使用内联if语句 <select [(ngModel)]="value" class="form-control" (blur)="onBlur()"> <option *ngFor="let item of items" [ngValue]="item">{{item.name?item.name:item}}</option> </select> {{item.name?item.name:item
<select [(ngModel)]="value" class="form-control" (blur)="onBlur()">
<option *ngFor="let item of items" [ngValue]="item">{{item.name?item.name:item}}</option>
</select>
{{item.name?item.name:item}
如何使用内联if语句使
{{item.name?item.name:item}}
成为可能?首先通过将项名称转换为布尔值下面的代码>应该可以工作
{{!!item.name ? item.name : item}}
您可以使用三元运算符(这是您已经使用的)或使用
标记():
{{item.name}
{{item}}
当然,您可以使用ngSwitch
而不是*ngIf
,但它没有太大变化
使用
标记的优点是它不会创建一个真正的HTML标记,这是选项中不允许的。您是否尝试过[ngValue]=“item.value?item.value:item”
您可以像使用它一样使用它:)它应该可以工作,问题是什么?我的问题是,同时item是字符串,而其他项是对象。因此,我想让这个字符串item
是一个字符串,您希望从item.name
中得到什么?字符串不包含键值对。如果它是一个对象,那将是真实的。这是一个plunker,您的意思是项
同时包含字符串和对象吗?如果这是问题所在,您应该检查项的类型。它会更改什么?不需要更改。条件语句最好由布尔值检查practice@B你说不需要是什么意思?OP的代码中没有!!这对他们不起作用,不是吗?@JoshuaDrake它在没有的情况下工作代码>,@Steffi是对的。
<select [(ngModel)]="value" class="form-control" (blur)="onBlur()">
<option *ngFor="let item of items" [ngValue]="item">
<template [ngIf]="item.name">{{ item.name }}</template>
<template [ngIf]="!item.name">{{ item }}</template>
</option>
</select>