Как проверить, нужно ли перебирать переменную - PullRequest
0 голосов
/ 19 декабря 2018

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

То, что я пробовал, это ng-if else, но оно не работает.

это примерно этот кусок кода:

<div *ngFor="let courseTimeslot of course?.timeslots">
     <div *ngIf="courseTimeslot; else timeslot" class="timeslots s-padding-l">
        {{ courseTimeslot.timeslot }}
      </div>
</div>

<ng-template #timeslot *ngIf="course?.timeslots" class="timeslots s-padding-l">{{ course?.timeslots }}</ng-template>

Это правильный способ сделать, иначе я хотел бы услышать любые другие варианты.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Вы можете проверить, является ли объект массивом или нет

<div *ngIf="Array.isArray(course?.timeslots)">
    <div *ngFor="let courseTimeslot of course?.timeslots">
        <div *ngIf="courseTimeslot" class="timeslots s-padding-l">
            {{ courseTimeslot.timeslot }}
        </div>
    </div>
</div>
<div *ngIf="!Array.isArray(course?.timeslots)">
    <ng-template #timeslot *ngIf="course?.timeslots" class="timeslots s-padding-l">{{ course?.timeslots }}</ng-template>
</div>

В вашем компоненте вам нужно:

Array = Array;
0 голосов
/ 19 декабря 2018

Вы можете достичь только с помощью метода компонента.

<ng-container *ngIf="course?.timeslots && checkType(course.timeslots);else timeslot">
   <div *ngFor="let courseTimeslot of course.timeslots" class="timeslots s-padding-l">{{ courseTimeslot.timeslot }}
   </div>
</ng-container>

<ng-template #timeslot *ngIf="course?.timeslots" class="timeslots s-padding-l">{{ course?.timeslots }}</ng-template>

Компонент:

checkType(dataItem){
   return typeof dataItem === "object" && dataItem.length > 0;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...