第一個自定義angular2日期格式管,這是我想達到什麼:使用翻譯
比方說,我有一個包含js的Date對象發佈的模型。現在,我想以自定義的,人類可讀的格式呈現日期,該格式不顯示日期和時間,而是從現在開始的偏移(即「剛纔」,「大約一小時前」,「大約兩個小時前」 「等)。
我是新來的兩個,打字稿及angular2,但是從我至今讀,最優雅的方法是使用自定義的管道像:
@Pipe({name: 'hrTime'})
export class HrTimePipe implements PipeTransform {
constructor(private translate: TranslateService) {
}
transform(val: Date): string {
// Roughly check if that date is about one hour ago
let now: Date = new Date();
now.setMinutes(now.getMinutes() - 90);
if (val > now) {
return this.translate.instant("about_1_h_ago");
}
}
}
這種方法的問題是, TranslateService的instant()
方法不能確保在構建或使用此管道時加載翻譯文件。因此,我的自定義管道當前只是返回我的翻譯密鑰(因爲instant()
未找到我的翻譯)。
對於較大的時間間隔(即超過一天前),我的管道應該在內部使用日期格式管道,因此返回一個必須管道化到translate
的翻譯密鑰並不是真正的選擇。
你有什麼建議嗎?使用自定義管道是我想要完成的正確方法?
謝謝!
您可以使用APP_INITIALIZER opaque標記來提供翻譯在應用程序啓動。看看[this](https://gist.github.com/M4R1KU/20359bd6bebfe0a9b0107d82ed729fbc)。 – M4R1KU