2016-11-03 7 views
0

Я делаю приложение Angular2 и получаю массив устройств с сервера. Не у каждого устройства есть атрибут «бренд» или «тип». Я хочу отобразить любой из них, но если они оба пропустят, я хочу отобразить «Устройство №». Я пытался использовать ngSwitch, но не могу заставить его работать ...использовать ngSwitch с объектом с условными атрибутами в Angular2

<div *ngFor="let device of devices; let i=index"> 
    <div [ngSwitch]="device"> 
    <a *ngSwitchCase="device.brand">{{device.brand}}</a> 
    <a *ngSwitchCase="device.type">{{device.type}}</a> 
    <a *ngSwitchDefault>Device {{i+1}}</a> 
    </div> 
</div> 

ответ

1

ngSwitch принимает действительные значения:

<div [ngSwitch]="gender"> 
    <div *ngSwitchCase="'male'">...</div> 
    <div *ngSwitchCase="'female'">...</div> 
</div> 

Вы пытаетесь использовать его в качестве ngIf.

Код, который будет решать ваши проблемы является:

<div *ngFor="let device of devices; let i=index"> 
    <div [ngSwitch]="device"> 
    <a *ngIf="device.brand && !device.type">{{device.brand}}</a> 
    <a *ngSwitchCase="device.type && !device.brand">{{device.type}}</a> 
    <a *ngIf="!device.type && !device.name">Device {{i+1}}</a> 
    </div> 
</div> 
+0

Спасибо, я получил его в конце концов решил только ngIf же, как вы делали там. –