【发布时间】:2017-11-11 08:31:46
【问题描述】:
我需要在我的 Angular 4/5 应用程序中构建一个 TimeZone 选择器。当用户更改时区时,我希望页面上显示的所有时间值都会立即更新。
我打算使用:
- momentjs 使用
angular2-moment和angular-moment-timezone支持时区。 - 要格式化日期,请使用
amLocal管道,然后是其他管道。 - 当用户选择不同的时区时,我打算拨打
moment.tz.setDefault(_timezone)
从此时起,上述值被格式化为新时区,而当前显示的时间值不会改变。角度变化检测机制不会更新显示的时间值,因为输入值没有改变。
由于性能开销(考虑到时区更改不是频繁活动),我不想创建“不纯”管道。
作为后备,我可以创建一个将当前时区作为参数的管道(或使用现有的管道)。它确实有效,但我需要将当前时区值传递给每个组件和模板。
我无法找到一种方法让 Angular 更改检测相信即使值没有更改也有更改。
欢迎提出任何建议。
【问题讨论】:
-
我无法找到一种方法让 Angular 更改检测相信即使值没有更改也会发生更改:是的,你有:这被称为不纯的管道。
-
双绑定可能是您的最佳选择?
-
当您说“不更新显示的时间值”时,精确是什么意思?您是否只是表示这些值代表“现在”并且您希望它们像时钟一样向前移动?如果是这样,您需要某种计时器。
标签: angular timezone momentjs angular2-moment