基于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 相关文章推荐
Jsonp 跨域的原理以及Jquery的解决方案
Jun 27 Javascript
jQuery学习笔记 更改jQuery对象
Sep 19 Javascript
JavaScript实现的encode64加密算法实例分析
Apr 15 Javascript
Javascript函数的参数
Jul 16 Javascript
JS中常用的输出方式(五种)
Jun 12 Javascript
vue多级多选菜单组件开发
Sep 08 Javascript
JS前向后瞻正则表达式定义与用法示例
Dec 27 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
Feb 17 Javascript
vue数据双向绑定原理解析(get &amp; set)
Mar 08 Javascript
10个经典的网页鼠标特效代码
Jan 09 Javascript
vue2.0模拟锚点的实例
Mar 14 Javascript
vue强制刷新组件的方法示例
Feb 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
一步一步学习PHP(5) 类和对象
2010/02/16 PHP
PHP中函数rand和mt_rand的区别比较
2012/12/26 PHP
PHP实现更新中间关联表数据的两种方法
2014/09/01 PHP
Yii2框架制作RESTful风格的API快速入门教程
2016/11/08 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
js 遍历对象的属性的代码
2011/12/29 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
2012/10/11 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
浅谈jQuery构造函数分析
2015/05/11 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
深入理解jQuery()方法的构建原理
2016/12/05 Javascript
js select下拉联动 更具级联性!
2020/04/17 Javascript
基于vue.js中事件修饰符.self的用法(详解)
2018/02/23 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
JS中队列和双端队列实现及应用详解
2020/09/29 Javascript
Python写的英文字符大小写转换代码示例
2015/03/06 Python
Python定时器实例代码
2017/11/01 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
python ftp 按目录结构上传下载的实现代码
2018/09/12 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
Python持续监听文件变化代码实例
2020/07/22 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
回门宴答谢词
2014/01/13 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
2015年教研组工作总结
2015/05/04 职场文书
办公室卫生管理制度
2015/08/04 职场文书
Redis 配置文件重要属性的具体使用
2021/05/20 Redis
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript