基于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 相关文章推荐
JS中简单的实现像C#中using功能(有源码下载)
Jan 09 Javascript
用js生产批量批处理执行命令
Jul 28 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
Oct 18 Javascript
js去除空格的12种实用方法
Nov 08 Javascript
JS实现很酷的水波文字特效实例
Feb 26 Javascript
Node.js事件驱动
Jun 18 Javascript
基于javascript代码实现通过点击图片显示原图片
Nov 29 Javascript
理解JavaScript中Promise的使用
Jan 18 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
Feb 14 Javascript
解决vue接口数据赋值给data没有反应的问题
Aug 27 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
Oct 28 Javascript
Vue axios获取token临时令牌封装案例
Sep 11 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 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
jQuery 打造动态下滑菜单实现说明
2010/04/15 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
js innerHTML 改变div内容的方法
2013/08/03 Javascript
JavaScript中读取和保存文件实例
2014/05/08 Javascript
jQuery中nextUntil()方法用法实例
2015/01/07 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
Bootstrap插件全集
2016/07/18 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
浅谈webpack devtool里的7种SourceMap模式
2019/01/14 Javascript
[05:11]TI9战队采访——VIRTUSPRO
2019/08/22 DOTA
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
Django 限制访问频率的思路详解
2019/12/24 Python
python生成大写32位uuid代码
2020/03/03 Python
用python读取xlsx文件
2020/12/17 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
HTML5 canvas实现的静态循环滚动播放弹幕
2021/01/05 HTML / CSS
尼克松手表官网:Nixon手表
2019/03/17 全球购物
斯洛伐克家具和时尚装饰品购物网站:Butlers.sk
2019/09/08 全球购物
毕业生医学检验求职信
2013/10/16 职场文书
家长对孩子的评语
2014/04/18 职场文书
体操比赛口号
2014/06/10 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
民主生活会汇报材料
2014/12/15 职场文书
护理心得体会范文
2016/01/22 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript