在运行时更改Angular中的区域设置?

Mad*_*tm2 5 javascript locale internationalization angular

我正在做一些关于在运行时更改Angular语言环境的研究,并找到了这个主题:如何在Angular 2中的DatePipe中设置语言环境?.
是否仍然无法在运行时更改语言环境?我有一个应用程序,它具有多个管道来根据语言环境格式化数字,日期和语言,但是为每个语言环境实现许多自定义管道 - 而不是在运行时能够更改它 - 似乎很荒谬.
你会用什么解决方案?

Mat*_*ira 7

我打赌你正在寻找这个,因为今天你升级@angular/materialbeta.10了DatePicker现在使用的LOCALE_ID,不是吗?我也在寻找替代方案而且没有运气.

Angular 4 i18n方法基于编译器,为不同语言生成不同的包,因此runtime该架构似乎不支持该解决方案.Angular 6编译器正在开展工作以支持runtime翻译更改.

目前,我喜欢ngx-translate方法,他们似乎订阅了lang更改并更新了使用Directive注册的DOM节点,并且我打算基于他们的TranslateDirective构建我自己的DateFormat管道,但是关于使用的服务和组件LOCALE_ID,我认为没有机会在运行时改变他们的行为.可能有新的导出资源用于扩展和自定义(我确实在更改日志中阅读了一些内容),因此我们可能需要深入研究我们想要翻译的组件.

如果你采取这种ngx-translate方法,让我们在github上分享东西来建造新的管道;)