首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >角日期选择-动态更新MAT_DATE_FORMATS

角日期选择-动态更新MAT_DATE_FORMATS
EN

Stack Overflow用户
提问于 2020-04-22 12:00:09
回答 2查看 2.4K关注 0票数 12

我正在一个Angular9应用程序上工作,这个应用程序可以处理日期。它显示和更新几个<mat-datepicker>字段。

我使用的是自定义MAT_DATE_FORMATSMomentDateAdapter (@angular/material-moment-adapter),来自https://www.npmjs.com/package/@angular/material-moment-adapter

我使用了以下代码,运行良好:

代码语言:javascript
运行
复制
export const APP_MOMENT_DATE_FORMATS =
{    
  parse: {},
  display: {
    dateInput: 'YYYY/MM/DD/MM',
    monthYearLabel: 'MMM YYYY',
    dateA11yLabel: 'LL',
    monthYearA11yLabel: 'MMMM YYYY'
  }
};

//..
providers: [
  {
     provide: MAT_DATE_FORMATS, useValue: APP_MOMENT_DATE_FORMATS
  },
  {
    provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]
  }
]
// ..

Stackblitz演示:https://stackblitz.com/edit/angular-formatted-datepicker-vdtaqj?file=app%2Fdatepicker-overview-example.ts

现在,我想知道是否可以更新APP_MOMENT_DATE_FORMATS.display.dateInput 动态的值-例如:也许它将通过http请求从配置服务中设置,或者我将在接口中显示一个选择器。

示例:

代码语言:javascript
运行
复制
export const APP_MOMENT_DATE_FORMATS =
  {  
    // ..  
    display: {
     dateInput: this.appService.dateInputFormat,
     // ..
   }
  };

我知道我可以实现一个定制的日期适配器,如下所述:角2材料2数据采集数据格式

但我想知道是否有另一种方法可以这样做,而不需要实现新的自定义日期适配器。

谢谢。

EN

Stack Overflow用户

发布于 2021-10-13 15:20:22

在花了几个小时寻找解决方案之后,我提出了以下解决方案,只需简单地注入MAT_DATE_FORMATS并动态地更改它:

代码语言:javascript
运行
复制
const APP_MOMENT_DATE_FORMATS =
{
    parse: {
    dateInput: 'MM/DD/YYYY',
    },
    display: {
    dateInput: 'MM/DD/YYYY',
    monthYearLabel: 'MMM YYYY',
    dateA11yLabel: 'LL',
    monthYearA11yLabel: 'MMMM YYYY'
    }
};

@Component({
...  
providers: [
    {
    provide: MAT_DATE_FORMATS, useValue: APP_MOMENT_DATE_FORMATS
    },
    {
    provide: DateAdapter,
    useClass: MomentDateAdapter,
    deps: [MAT_DATE_LOCALE]
    }
]
})

export class DatePickerComponent implements OnInit, OnDestroy {

constructor(@Inject(MAT_DATE_FORMATS) public data: any) {
    data.parse.dateInput = 'DD/MM/YYYY'
    data.display.dateInput = 'DD/MM/YYYY'
  }
}
票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61364618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档