基于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 相关文章推荐
用Div仿showModalDialog模式菜单的效果的代码
Mar 05 Javascript
一个js封装的不错的选项卡效果代码
Feb 15 Javascript
妙用Jquery的val()方法
Jun 27 Javascript
document.createElement()用法及注意事项(ff下不兼容)
Mar 13 Javascript
JS修改iframe页面背景颜色的方法
Apr 01 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
Dec 02 Javascript
Javascript闭包与函数柯里化浅析
Jun 22 Javascript
JavaScript实现in-place思想的快速排序方法
Aug 07 Javascript
JavaScript之filter_动力节点Java学院整理
Jun 28 Javascript
jQuery实现全选、反选和不选功能
Aug 16 jQuery
最适应的vue.js的form提交涉及多种插件【推荐】
Aug 27 Javascript
vue实现多条件和模糊搜索功能
May 28 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
跟我学小偷程序之成功偷取首页(第三天)
2006/10/09 PHP
使用PHP导出Word文档的原理和实例
2013/10/21 PHP
php curl模拟post提交数据示例
2013/12/31 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
Zend Framework处理Json数据方法详解
2016/12/09 PHP
js 字符串操作函数
2009/07/25 Javascript
防止动态加载JavaScript引起的内存泄漏问题
2009/10/08 Javascript
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
Immutable 在 JavaScript 中的应用
2016/05/02 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
VUE前端从后台请求过来的数据进行转换数据结构操作
2020/11/11 Javascript
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
安装Python的教程-Windows
2017/07/22 Python
浅析python继承与多重继承
2018/09/13 Python
django 将model转换为字典的方法示例
2018/10/16 Python
python中dict使用方法详解
2019/07/17 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
2019/08/05 Python
python读取指定字节长度的文本方法
2019/08/27 Python
html5弹跳球示例代码
2013/07/23 HTML / CSS
使用HTML5 Geolocation实现一个距离追踪器
2018/04/09 HTML / CSS
阿迪达斯中国官网:Adidas中国
2020/12/14 全球购物
表彰先进的通报
2014/01/31 职场文书
初二生物教学反思
2014/02/03 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
爱岗敬业事迹材料
2014/12/24 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
室外天线与收音机天线杆接合方法
2022/04/05 无线电