基于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版Tab标签切换
Mar 16 Javascript
javascript中substring()、substr()、slice()的区别
Aug 30 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
Oct 30 Javascript
EasyUI学习之Combobox级联下拉列表(2)
Dec 29 Javascript
基于vue-router 多级路由redirect 重定向的问题
Sep 03 Javascript
如何自动化部署项目?折腾服务器之旅~
Apr 16 Javascript
Vue项目实现换肤功能的一种方案分析
Aug 28 Javascript
React Hooks 实现和由来以及解决的问题详解
Jan 17 Javascript
JS常用排序方法实例代码解析
Mar 03 Javascript
详细分析Node.js 模块系统
Jun 28 Javascript
javascript实现贪吃蛇小游戏
Jul 28 Javascript
微信小程序实现日历小功能
Nov 18 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编码转换
2012/11/05 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
2014/11/04 PHP
php生成二维码不保存服务器还有下载功能的实现代码
2018/08/09 PHP
JS网络游戏-(模拟城市webgame)提供的一些例子下载
2007/10/14 Javascript
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
js实现右键菜单功能
2016/11/28 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
2017/01/22 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
2018/03/21 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
python批量同步web服务器代码核心程序
2014/09/01 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
把pandas转换int型为str型的方法
2019/01/29 Python
python 使用pandas计算累积求和的方法
2019/02/08 Python
使用Python画股票的K线图的方法步骤
2019/06/28 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
python连接mysql有哪些方法
2020/06/24 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
资产评估专业大学生求职信
2013/09/29 职场文书
中学家长会邀请函
2014/02/03 职场文书
文明班集体申报材料
2014/05/23 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
监守自盗观后感
2015/06/10 职场文书
网络营销实训总结
2015/08/03 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书
七年级作文之雪景
2019/11/18 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript