首页 > 解决方案 > Ng Date Picker 如何格式化为不同的输出而不是 ISO-8601

问题描述

首先,对于想知道的人,我指的是这个 DatePicker

https://danielykpan.github.io/date-time-picker/#locale-formats

虽然 DatePicker 感觉和看起来都很棒,但我对输出值有疑问。有许多选项可以格式化日期的视图部分,但我还没有看到或找到关于如何在我的形式。我以反应形式使用日期选择器,并且我有几个具有类似先决条件的页面。我需要将此值解析为不同的格式。例如...

29-08-2018

我的第一次尝试——一开始不太聪明——是使用 [(ngModel)]="dateField" 来获取输入的值并将其更改为我想要的值。不用说,当然它在视图中也发生了变化,因为我没有参考表单字段的索引,它只是导致了一个空白字段。在我意识到这种方法一开始就很糟糕之后不久,但由于我找不到针对这个特定问题的配置,所以我对我能做什么感到很迷茫。

https://imgur.com/dZYQObD

标签: javascriptangulartypescript

解决方案


@ak.leimrey。通常所有的日期选择器都会给你一个类型的值(在你的情况下是 ISO 中的字符串格式,其他情况下,例如使用 ng-bootstrap,返回一个带有日、月和年的对象)。如果您想以其他格式发送,在提交中您可以映射值并转换 form.value。

submit(form)
{
   if (form.valid)
   {
      let result={
         ...form.value, //all the values of the form, but change some one
         searchParams:form.value.searchParams.map(x=>{
             ...x
             value.map(v=>{
                let items=v.split('-');
                return items[2].substr(0,2)+"-"+items[1]+"-"+items[0];
             })
         })
      }
      console.log(result)
   }
}

是的,在您的情况下,转换对象有些困难,但使用扩展运算符和映射可以转换值


推荐阅读