第一个自定义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