首页 > 解决方案 > 更改全局值时更新现有时刻语言环境

问题描述

从 2.8.0 开始,更改全局区域设置不会影响现有实例。

如何在不重新呈现页面的情况下更新现有时刻实例的语言环境

moment.locale('fr');
var m = moment(1316116057189);
m.fromNow(); // il y a une heure

moment.locale('en');
m.fromNow(); // il y a une heure
moment(1316116057189).fromNow(); // an hour ago

创建后如何更新 m 的语言环境?或者将 m 的语言环境链接到全局时刻语言环境?

例如:

我有服务

// Language service
moment.locale('en-GB')


updateLanguage(lang) {
   moment.locale(lang);
}

和一个组件

// Component

this.timeLabel = moment(this.event.time).fromNow(); // an hour ago

当我调用languageService.updateLang('fr');timeLabel 的值时,需要更改以便它使用更新的语言环境。但是它保持不变。

我可以订阅一个Subject,但我在整个应用程序中有数百个这样的变量

标签: angularmomentjs

解决方案


推荐阅读