Как сравнить даты с помощью ngIf в angular 2 и соответственно обновить фон карты?

У меня есть "md-grid-list" для отображения карт в сетке. Я зацикливаю свой массив данных, используя «ngFor». Как сравнить каждый элемент datetime в массиве с заданным DateTime, используя «ngIf»? и если условие выполнено успешно, цвет карты должен быть установлен зеленым, а если условие не выполнено, цвет карты установлен на другой цвет.

<md-grid-list cols="4"  rowHeight="250px" gutterSize="20px">
  <md-grid-tile  *ngFor="let data of mydata" >
        <div *ngIf="(data.myDatetime | date:'HH:mm:ss, MMMM dd') < (myCurrentDateTime |date:'HH:mm:ss, MMMM dd')">

      <md-card [style.background]="'red'" [style.minHeight]="'100%'">   
    <md-card-title></md-card-title>
    <md-card-title></md-card-title>
    <md-card-content>
    <h2>
    </h2>
    </md-card-content>  
    </md-card>
        </div>
  </md-grid-tile>
</md-grid-list>

person user2301    schedule 09.05.2017    source источник
comment
Пожалуйста, добавьте скрипку вашей работы   -  person Amadou Beye    schedule 09.05.2017
comment
@AmadouBeye Я не использовал скрипку. Я хотел бы знать, как использовать ngIf else в ngFor в Angular 2. Я хочу динамически обновлять карту в зависимости от условия.   -  person user2301    schedule 09.05.2017
comment
@AmadouBeye На самом деле вы должны использовать plunker, а не jsfiddle   -  person Edric    schedule 10.05.2017


Ответы (1)


JavaScript использует объекты для хранения значений даты. Если вы хотите сравнить, равны ли две даты, не делайте этого date1 === date2. Это просто скажет вам, ссылаются ли две переменные на один и тот же объект.

Чтобы проверить, равны ли две даты, используйте метод getTime() объекта даты. Как это:

date1.getTime() == date2.getTime()

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

В вашем случае это будет:

ngIf="data.myDatetime.getTime() < myCurrentDateTime.getTime()"

Если форматы дат указаны в отметке времени Unix:

ngIf="data.myDatetime < myCurrentDateTime"

Надеюсь, поможет

person Amadou Beye    schedule 09.05.2017
comment
Форматы даты указаны в отметке времени Unix. Например, это две даты 1494315270412 и 1494258011370. Как мне сравнить эти даты? - person user2301; 10.05.2017