基于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 相关文章推荐
jQuery Clone Bug解决代码
Dec 22 Javascript
javascript获取元素离文档各边距离的方法
Feb 13 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
May 25 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
Jan 25 Javascript
JavaScript递归操作实例浅析
Oct 31 Javascript
Vue实现双向绑定的方法
Dec 22 Javascript
IntersectionObserver实现图片懒加载的示例
Sep 29 Javascript
js 获取json数组里面数组的长度实例
Oct 31 Javascript
swiper 解决动态加载数据滑动失效的问题
Feb 26 Javascript
解决vue页面DOM操作不生效的问题
Mar 17 Javascript
微信小程序点击顶部导航栏切换样式代码实例
Nov 12 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
Mar 05 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 Array交叉表实现代码
2010/08/05 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
How to Auto Include a Javascript File
2007/02/02 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
2015/04/15 Javascript
JS表格组件神器bootstrap table详解(基础版)
2015/12/08 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
JS实现提示框跟随鼠标移动
2019/08/27 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
python进阶教程之异常处理
2014/08/30 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
Python中@property的理解和使用示例
2019/06/11 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
python将字符串转换成json的方法小结
2019/07/09 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
芭比波朗加拿大官方网站:Bobbi Brown Cosmetics CA
2020/11/05 全球购物
交通安全演讲稿
2014/01/07 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
Python多个MP4合成视频的实现方法
2021/07/16 Python
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript
Python使用BeautifulSoup4修改网页内容
2022/05/20 Python