基于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 处理 URL 的两个函数代码
Aug 13 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
May 28 Javascript
详解jQuery插件开发中的extend方法
Nov 19 Javascript
JS在IE下缺少标识符的错误
Jul 23 Javascript
js实现防止被iframe的方法
Jul 03 Javascript
轻松搞定jQuery.noConflict()
Feb 15 Javascript
解析javascript图片懒加载与预加载的分析总结
Oct 27 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
Jan 23 Javascript
基于javascript实现最简单选项卡切换
Feb 01 Javascript
JS+DIV实现的卷帘效果示例
Mar 22 Javascript
vue打包后显示空白正确处理方法
Nov 01 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
May 04 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如何解决网站大流量与高并发的问题
2011/06/25 PHP
5款适合PHP使用的HTML编辑器推荐
2015/07/03 PHP
详解PHP处理字符串类似indexof的方法函数
2017/06/11 PHP
在jquery中处理带有命名空间的XML数据
2011/06/13 Javascript
关于全局变量和局部变量的那些事
2013/01/11 Javascript
js+html+css实现鼠标移动div实例
2013/01/30 Javascript
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
2014/11/28 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
微信小程序 开发经验整理
2017/02/15 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
朴素贝叶斯算法的python实现方法
2014/11/18 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
浅谈Python的垃圾回收机制
2016/12/17 Python
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
python实现验证码识别功能
2018/06/07 Python
Django MEDIA的配置及用法详解
2019/07/25 Python
python mysql中in参数化说明
2020/06/05 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
我们是伦敦女孩:WalG
2018/01/08 全球购物
学前教育专业毕业生自荐信
2013/10/03 职场文书
十岁生日同学答谢词
2014/01/19 职场文书
青年文明号创建承诺
2014/03/31 职场文书
工人先锋号事迹材料
2014/12/24 职场文书
mysql优化
2021/04/06 MySQL
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python
Mysql官方性能测试工具mysqlslap的使用简介
2021/05/21 MySQL
Pandas搭配lambda组合使用详解
2022/01/22 Python