基于datepicker定义自己的angular时间组件的示例


Posted in Javascript onMarch 14, 2018

基于datepicker定义自己的angular时间组件,分享给大家。

首先是引入相应的文件jquery和datepicker,如下

"styles": [
   "styles.less",
   "./assets/lib/datetimepicker/datetimepicker.css"
  ],
  "scripts": [
   "assets/lib/jquery/jquery.min.js",
   "./assets/lib/datetimepicker/datetimepicker.js",
  ],

然后是ts文件

import { Component, EventEmitter, OnInit, AfterViewInit, ElementRef, Input, Output } from '@angular/core';
import { ControlValueAccessor, NgControl } from '@angular/forms';

declare var $: any;

@Component({
 selector: 'my-datepicker',
 template: '<input [name]="name" [disabled]="disabled" class="ant-input" [value]="value">'
})

export class MyDatePickerComponent implements OnInit, AfterViewInit, ControlValueAccessor {
 constructor(
  private _element: ElementRef,
  public _control: NgControl
 ) {
  if (this._control) {
   this._control.valueAccessor = this;
  }
 }

 @Input()
 name:string;

 @Input()
 disabled:string;

 @Input()
 options:Object = {};

 @Input('ngModel')
 value: string;

 @Output() onChoose = new EventEmitter<any>();
 
 defaults: Object;

 _onChange = (value: any) => {};

 writeValue(value: string) {
  if (value) {
   this.value = value;
  }
 }

 registerOnChange(fn: (value: any) => void) {
  this._onChange = fn;
 }

 registerOnTouched(fn: any) {

 }

 ngOnInit() {
  if (this.value == undefined) {
   this.value = '';
  }

  let _this = this;
  this.defaults = {
       format: 'YYYY-MM-DD',
       isToday:true,
       choosefun: function(ele, data){
        _this._choose(data);
       },
       clearfun: function(){
        _this._clear();
       },
       closefun: function() {
        _this._close();
       }
      };
 }

 ngAfterViewInit() {
  let options = $.extend({}, this.defaults, this.options);

  $(this._element.nativeElement).find('input').jeDate(options)
   .on('click', function(e) {
    e.stopPropagation();

    $(this).addClass('focus').blur();
   });
 }

 private _choose(value: string) {
  this._onChange(value);

  this.onChoose.emit(value); // 选中事件
 }

 private _clear() {
  this._onChange('');

  this.onChoose.emit(''); // 选中事件
 }

 private _close() {
  $(this._element.nativeElement).find('input').removeClass('focus');
 }
}

最后是调用,option里面定义自己的时间格式

 <my-datepicker  name="jssj" [(ngModel)]="search.jssj" [options]="{format:'YYYY-MM-DD hh:mm:ss'}"></my-datepicker>

总结:通过这个组件,我们只需要调用my-datepicker 就可以在任意模块引入然后使用,减少代码的使用,方便维护

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
Feb 14 Javascript
优化javascript的执行效率一些方法总结
Dec 25 Javascript
javascript文件中引用依赖的js文件的方法
Mar 17 Javascript
table行随鼠标移动变色示例
May 07 Javascript
jQuery中:has选择器用法实例
Dec 30 Javascript
微信小程序 MD5加密登录密码详解及实例代码
Jan 12 Javascript
简单谈谈gulp-changed插件
Feb 21 Javascript
bootstrap栅格系统示例代码分享
May 22 Javascript
angular directive的简单使用总结
May 24 Javascript
vue使用axios跨域请求数据问题详解
Oct 18 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
Jun 19 Javascript
JavaScript实现图片合成下载的示例
Nov 19 Javascript
vue 过滤器filter实例详解
Mar 14 #Javascript
vue页面切换到滚动页面显示顶部的实例
Mar 13 #Javascript
聊聊JS动画库 Velocity.js的使用
Mar 13 #Javascript
vue toggle做一个点击切换class(实例讲解)
Mar 13 #Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
Mar 13 #Javascript
vue2.0 实现页面导航提示引导的方法
Mar 13 #Javascript
vue2.0 根据状态值进行样式的改变展示方法
Mar 13 #Javascript
You might like
php使用exec shell命令注入的方法讲解
2013/11/12 PHP
jQuery回车实现登录简单实现
2013/08/20 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
2017/02/14 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
兼容浏览器的js事件绑定函数(详解)
2017/05/09 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
vue 请求后台数据的实例代码
2017/06/22 Javascript
tween.js缓动补间动画算法示例
2018/02/13 Javascript
Vue实现6位数密码效果
2018/08/18 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
详解vue路由
2020/08/05 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
Python简单连接MongoDB数据库的方法
2016/03/15 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
numpy实现神经网络反向传播算法的步骤
2019/12/24 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
python map比for循环快在哪
2020/09/21 Python
python os.rename实例用法详解
2020/12/06 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
什么是网络协议
2016/04/07 面试题
2014年最新学习全国两会精神心得
2014/03/17 职场文书
公司员工活动策划方案
2014/08/20 职场文书
升国旗演讲稿
2014/09/05 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
教师个人年度总结
2015/02/11 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
民间借贷纠纷答辩状
2015/08/03 职场文书
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python