Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何在括号内使用内联if语句_Angular_Angular2 Template - Fatal编程技术网

Angular 如何在括号内使用内联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

我想像这样在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}

如何使用内联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>