2017-01-25 6 views
4

Я хочу использовать inline if в шаблоне 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}} возможно с использованием inline if statement?

+0

Вы пытались '[ngValue] =" item.value? Item.value: item "' –

+1

Вы можете использовать его так, как будто вы его используете :) Он должен работать, в чем проблема? –

+0

моей проблемой является тот же самый элемент времени, а другие - объект. , так что я хочу сделать эту динамическую –

ответ

5

Имя новообращенного элемента для булева по !! ниже должен работать

{{!!item.name ? item.name : item}} 
+0

что это изменяет? – smnbbrv

+0

Нет необходимости в этом. –

+1

Условное утверждение должно быть проверено логическим значением для наилучшей практики –

2

Вы можете использовать тройной оператор (то, что вы уже используете) или использовать <template> тега (see more):

<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> 

Конечно, вы можете использовать ngSwitch вместо *ngIf, но это не сильно изменится.

Преимущество использования тега <template> заключается в том, что он не создает настоящий HTML-тег, который недопустим внутри опции.

+0

да, этот работа тоже. –