2017-01-21 2 views
3

Ich habe ein Objekt mit einem Zeitstempel in meiner Komponente.Wie kann ich das aktuelle Datum in einer Vorlage überprüfen?

Ich versuche, den Zeitstempel zur Laufzeit in der Vorlage zu überprüfen. zum Beispiel um den Benutzer Online-Status eines Mitglieds anzuzeigen. Wenn online, zeige ich einen grünen Punkt, sonst sollte es während der Laufzeit zu einem roten Punkt wechseln.

<div class="show_member_line"> 
    {{member.membername}} 
    <div *ngIf="member.lastactivity > (!!!new Date().getTime()!!! - 120)" class="status_online"></div> 
    <div *ngIf="member.lastactivity < (!!!new Date().getTime()!!! - 120)" class="status_offline"></div> 
</div> 

hat jemand eine idee? :)

Antwort

4

besserer Ansatz meiner Meinung nach wäre einen Timer in Ihrer Komponente zu erstellen, wie

import {Component, OnInit, OnDestroy} from '@angular/core'; 

private timerSubscription: any = null; 
private lastActivityTime: Date; 

ngOnInit(){ 
    let timer = Observable.timer(1000, 1000); 
    this.timerSubscription = timer.subscribe((t:any) => { 
     this.timerExecuted(); 
    }); 
}  

private timerExecuted(): void { 
    var currentDate = new Date(); 
    currentDate.setHours(currentDate.getHours() - 2); //subtract 2 hours or 120 minutes from current date 
    this.lastActivityTime = currentDate; 
} 

ngOnDestroy() { 
    //unsubscribe the subscription in ngDestroy 
    if (this.timerSubscription != null) 
     this.timerSubscription.unsubscribe(); 
} 

lastActivityTime wird nach jeder Sekunde aktualisiert, und Sie können es zum Vergleich verwenden leichter in Ihrer Vorlage wie

<div class="show_member_line"> 
    {{member.membername}} 
    <div *ngIf="member.lastactivity > lastActivityTime" class="status_online"></div> 
    <div *ngIf="member.lastactivity < lastActivityTime" class="status_offline"></div> 
</div> 
Verwandte Themen