我正在爲我的Angular 2應用程序創建一個「時間之前」的管道。Angular 2「ago ago」pipe
它應該將日期轉換爲諸如「5分鐘前」或「60秒前」之類的字符串。它迄今爲止效果很好,但在第一次計算後不會更新。如果給定日期例如是5秒前,則顯示「5秒前」,但在此之後不會改變。
我已經嘗試將管道的「純」值設置爲false,但這並沒有幫助。
這裏是我的代碼:
import {Pipe, PipeTransform} from 'angular2/core';
@Pipe({
name: 'messageTime',
pure: false
})
export class MessageTimePipe implements PipeTransform {
transform(value: Date, []): string {
var result: string;
// current time
let now = new Date().getTime();
// time since message was sent in seconds
let delta = (now - value.getTime())/1000;
// format string
if (delta < 10) {
result = 'jetzt';
} else if (delta < 60) { // sent in last minute
result = 'vor ' + Math.floor(delta) + ' Sekunden';
} else if (delta < 3600) { // sent in last hour
result = 'vor ' + Math.floor(delta/60) + ' Minuten';
} else if (delta < 86400) { // sent on last day
result = 'vor ' + Math.floor(delta/3600) + ' Stunden';
} else { // sent more than one day ago
result = 'vor ' + Math.floor(delta/86400) + ' Tagen';
}
return result;
}
}
我使用這樣的過濾器:
打字稿:
import {Component, Input} from 'angular2/core';
import {MessageTimePipe} from '../../pipes/message-time.pipe';
@Component({
selector: 'message-item',
pipes: [MessageTimePipe],
templateUrl: 'build/components/message-item/message-item.component.html'
})
export class MessageItemComponent {
@Input()
message: JSON;
date: Date;
ngOnInit() {
this.date = new Date(2016, 3, 16, 12, 49, 10);
}
}
HTML:
<p class="time">
{{ date | messageTime }}
</p>
你還可以展示你如何使用這個管道。 – sreeramu