基于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 相关文章推荐
从新浪弄下来的全屏广告代码 与使用说明
Mar 15 Javascript
jQuery contains过滤器实现精确匹配使用方法
Apr 12 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
Mar 11 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
Jul 05 Javascript
JS实现队列的先进先出功能示例
May 10 Javascript
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
Jul 31 Javascript
图片文字识别(OCR)插件Ocrad.js教程
Nov 26 Javascript
解析vue、angular深度作用选择器
Sep 11 Javascript
基于Vue 撸一个指令实现拖拽功能
Oct 09 Javascript
vue quill editor 使用富文本添加上传音频功能
Jan 14 Javascript
详谈vue中router-link和传统a链接的区别
Jul 22 Javascript
原生js实现无缝轮播图效果
Jan 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
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
php 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
yii分页组件用法实例分析
2015/12/28 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
PHP7引入的&quot;??&quot;和&quot;?:&quot;的区别讲解
2019/04/08 PHP
PHP goto语句用法实例
2019/08/06 PHP
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
2017/09/20 Javascript
vue mounted 调用两次的完美解决办法
2018/10/29 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
2020/07/17 Javascript
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
python 算法 排序实现快速排序
2012/06/05 Python
python中的全局变量用法分析
2015/06/09 Python
python实现各进制转换的总结大全
2017/06/18 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
Python生成器定义与简单用法实例分析
2018/04/30 Python
pandas筛选某列出现编码错误的解决方法
2018/11/07 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
2019/11/25 Python
浅析python表达式4+0.5值的数据类型
2020/02/26 Python
美国在线珠宝商店:SZUL
2017/02/11 全球购物
印尼网上商店:Alfacart.com
2019/03/11 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
顺丰快递Java软件工程师面试题
2015/07/31 面试题
《老山界》教学反思
2014/04/08 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
小学体育队列队形教学反思
2016/02/16 职场文书
为什么中国式养孩子很累?
2019/08/07 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers