2016-08-23 3 views
1

Я хочу показать данные json в клиенте. Если сервер отправляет массив, его можно обрабатывать с помощью * ngfor = "item of items", но сервер может отправить одну строку json, которая не может быть реализована с помощью * ngfor, потому что с * ngfor мы можем просто иметь массив. Как можно реализовать условные * ngfor:angularjs2 условный * ngfor

<div *ngFor="let item of (Array.isArray(items) ? items : [items]) 

Я хочу, чтобы проверить элементы переменными, если тип массива, элементы должны быть использован в качестве массива, в противном случае одна строки Джейсона

Заранее спасибо

ответ

1

Я предлагаю вам создать два divs с оператором *ngIf и использовать ngFor в случае, если сервер возвращает массив.

<div *ngIf="Array.isArray(items)" *ngFor="let item of items">{{item}}</div> 
<div *ngIf="!Array.isArray(items)">{{items | json}}</div> 

Это дает лучшее понимание с первого взгляда, что происходит в коде. Надеюсь, это поможет

0

Спасибо за помощь. Как вы рекомендуете, я попытался следующий код и он работает

<div [ngSwitch]="items.length > 0"> 
    <div *ngSwitchCase="true"> 
    <div *ngFor="let item of items"> 
     <md-checkbox 
      [checked]= "item[valueKey] == trueValue" 
      [disabled]="disabled" 
      align="start" 
      (change)="onChange($event,item,valueKey)" 
      (onInputFocus)="onFocus()"> 
       {{item[labelKey]}} 
    </md-checkbox> 
    </div> 

<md-checkbox 
      [checked]= "items[valueKey] == trueValue" 
      [disabled]="disabled" 
      align="start" 
      (change)="onChange($event,items,valueKey)" 
      (onInputFocus)="onFocus()"> 
     {{items[labelKey]}} 
    </md-checkbox> 
</div> 

Смежные вопросы