基于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 相关文章推荐
javascript使用isNaN()函数判断变量是否为数字
Sep 21 Javascript
jquery实现弹出层遮罩效果的简单实例
Mar 03 Javascript
浅谈Unicode与JavaScript的发展史
Jan 19 Javascript
高性能JavaScript DOM编程(1)
Aug 11 Javascript
JavaScript模块规范之AMD规范和CMD规范
Oct 27 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
Sep 06 Javascript
浅谈webpack 自动刷新与解析
Apr 09 Javascript
vscode中vue-cli项目es-lint的配置方法
Jul 30 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
Sep 12 Javascript
教你如何用Node实现API的转发(某音乐)
Sep 20 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
Sep 04 Javascript
JavaScript前端面试组合函数
Jun 21 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 读取和修改大文件的某行内容的代码
2009/10/30 PHP
php PDO异常处理详解
2016/11/20 PHP
PHP实现的策略模式示例
2019/03/20 PHP
jQuery timers计时器简单应用说明
2010/10/28 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
javascript实现选中复选框后相关输入框变灰不可用的方法
2015/08/11 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
用Python编程实现语音控制电脑
2014/04/01 Python
Python正则表达式完全指南
2017/05/25 Python
java中两个byte数组实现合并的示例
2018/05/09 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
Django ORM 查询管理器源码解析
2019/08/05 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
2019/10/17 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
Python通过文本和图片生成词云图
2020/05/21 Python
电视购物广告词
2014/03/19 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
志愿者宣传口号
2014/06/17 职场文书
住房租房协议书
2014/08/20 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
事业单位考察材料范文
2014/12/25 职场文书
置业顾问岗位职责
2015/02/09 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
写给老师的保证书
2015/05/09 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python
如何使用PyCharm及常用配置详解
2021/06/03 Python
改造DE1103三步曲
2022/04/07 无线电