• 技术文章 >web前端 >js教程

    聊聊自定义angular-datetime-picker格式的方法

    青灯夜游青灯夜游2022-09-08 20:29:41转载479
    怎么自定义angular-datetime-picker格式?下面本篇文章聊聊自定义格式的方法,希望对大家有所帮助!

    大前端成长进阶课程:进入学习

    最近一直都在使用 Angular 进行开发,维护项目。遇到了日期的问题,同事采用的是 @danielmoncada/angular-datetime-picker

    PS:当然,如果是新项目,还是建议使用框架集成的日期功能,虽然功能可能不是你的预期,但是起码够用。比如 ant designangular 版本。

    当然,angular-datetime-picker 提供了很多属性和事件。【相关教程推荐:《angularjs视频教程》】

    比如:

    owl-date-time 的属性有:

    属性名称类型是否必要默认值
    pickerTypeboth, calendar, timer可选both
    yearOnly布尔值可选false

    其他的属性和方法请前往官网查看

    当然,本文我们并不是探讨这些简单更改属性和方法的需求。我们来讨论两点:

    目前默认的值是这样的:

    1.png

    我们有相关的 html 代码如下:

    <ng-container>
      <input 
        element-id="date-time-picker" 
        class="form-control" 
        (ngModelChange)="goToDate($event)" 
        [min]="minDate" [max]="maxDate" 
        [owlDateTimeTrigger]="dt" 
        [(ngModel)]="selectedMoment" 
        [owlDateTime]="dt">
      <owl-date-time #dt [showSecondsTimer]="true"></owl-date-time>
    </ng-container>

    设置时间格式

    app.module.ts 中引入:

    import {OwlDateTimeModule, OwlMomentDateTimeModule, OWL_DATE_TIME_FORMATS} from '@danielmoncada/angular-datetime-picker';
    
    // https://danielykpan.github.io/date-time-picker/#locale-formats
    // 自定义格式化时间
    export const MY_MOMENT_FORMATS = {
        fullPickerInput: 'YYYY/MM/DD HH:mm:ss', // 指定的时间格式
        datePickerInput: 'YYYY/MM/DD',
        timePickerInput: 'HH:mm:ss',
        monthYearLabel: 'YYYY/MM',
        dateA11yLabel: 'YYYY/MM/DD',
        monthYearA11yLabel: 'YYYY/MM',
    };
    
    @NgModule({
      imports: [
        OwlDateTimeModule,
        OwlMomentDateTimeModule
      ],
      providers: [
        {provide: OWL_DATE_TIME_FORMATS, useValue: MY_MOMENT_FORMATS
      ],
    })
    
    export class AppModule {
    }

    得到的结果图如下:

    2.png

    翻译按钮

    我们需要用到这个包的国际化,将对应的 Cancel 翻译成 取消Set 翻译成 设置

    官网已经介绍:

    import { NgModule } from '@angular/core'; 
    import { OwlDateTimeModule, OwlNativeDateTimeModule, OwlDateTimeIntl} from 'ng-pick-datetime'; 
    // here is the default text string 
    export class DefaultIntl extends OwlDateTimeIntl = { 
      /** A label for the up second button (used by screen readers). */
      upSecondLabel= 'Add a second', 
      /** A label for the down second button (used by screen readers). */
      downSecondLabel= 'Minus a second', 
      /** A label for the up minute button (used by screen readers). */ 
      upMinuteLabel= 'Add a minute', 
      /** A label for the down minute button (used by screen readers). */ 
      downMinuteLabel= 'Minus a minute',
      /** A label for the up hour button (used by screen readers). */ 
      upHourLabel= 'Add a hour', 
      /** A label for the down hour button (used by screen readers). */
      downHourLabel= 'Minus a hour', 
      /** A label for the previous month button (used by screen readers). */
      prevMonthLabel= 'Previous month', 
      /** A label for the next month button (used by screen readers). */
      nextMonthLabel= 'Next month', 
      /** A label for the previous year button (used by screen readers). */
      prevYearLabel= 'Previous year', 
      /** A label for the next year button (used by screen readers). */
      nextYearLabel= 'Next year', 
      /** A label for the previous multi-year button (used by screen readers). */
      prevMultiYearLabel= 'Previous 21 years', 
      /** A label for the next multi-year button (used by screen readers). */
      nextMultiYearLabel= 'Next 21 years', 
      /** A label for the 'switch to month view' button (used by screen readers). */
      switchToMonthViewLabel= 'Change to month view', 
      /** A label for the 'switch to year view' button (used by screen readers). */
      switchToMultiYearViewLabel= 'Choose month and year', 
      /** A label for the cancel button */ 
      cancelBtnLabel= 'Cancel', 
      /** A label for the set button */ 
      setBtnLabel= 'Set', 
      /** A label for the range 'from' in picker info */ 
      rangeFromLabel= 'From', 
      /** A label for the range 'to' in picker info */ 
      rangeToLabel= 'To', 
      /** A label for the hour12 button (AM) */ 
      hour12AMLabel= 'AM', 
      /** A label for the hour12 button (PM) */ 
      hour12PMLabel= 'PM', 
    }; 
    
    @NgModule({  
     imports: [
       OwlDateTimeModule, 
       OwlNativeDateTimeModule
     ], 
     providers: [ 
       {provide: OwlDateTimeIntl, useClass: DefaultIntl}, 
     ], 
    }) 
    
    export class AppExampleModule { }

    我们按照上面的思路整合下来实现我们的需求:

    新建翻译文件 owl-date-time-translator.ts

    import { Injectable } from '@angular/core';
    import { DefaultTranslationService } from '@services/translation.service';
    import { OwlDateTimeIntl } from '@danielmoncada/angular-datetime-picker';
    
    @Injectable()
    export class OwlDateTimeTranslator extends OwlDateTimeIntl {
    
      constructor(protected translationService: DefaultTranslationService) {
        super();
    
        /** 取消按钮 */
        this.cancelBtnLabel = this.translationService.translate('action.cancel');
    
        /** 设置按钮 */
        this.setBtnLabel = this.translationService.translate('action.set');
      }
    
    };

    这里我们引入了翻译服务 translationService,可以根据不同地区进行语言选择。

    然后我们在 app.module.ts 上操作:

    import { OwlDateTimeIntl } from '@danielmoncada/angular-datetime-picker';
    
    // 翻译 @danielmoncada/angular-datetime-picker
    import { OwlDateTimeTranslator } from './path/to/owl-date-time-translator';
    
    @NgModule({
      providers: [
        {provide: OwlDateTimeIntl, useClass: OwlDateTimeTranslator},
      ],
    })
    
    export class AppModule {
    }

    得到的效果图如下:

    3.png

    更多编程相关知识,请访问:编程视频!!

    以上就是聊聊自定义angular-datetime-picker格式的方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:掘金社区,如有侵犯,请联系admin@php.cn删除

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:Angular Angular.js
    上一篇:关于JavaScript中的数组方法和循环 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• angular如何进行性能优化?变更检测方式浅析• 聊聊Angular Route中怎么提前获取数据• Angular如何进行视图封装?聊聊三种封装模式• 4个Angular单元测试编写的小技巧,快来看看!• 5 个管理 Angular 项目的实用技巧(总结分享)• 聊聊如何使用MemFire Cloud构建Angular应用程序
    1/1

    PHP中文网