angular inputNumber指令输入框只能输入数字的实现


Posted in Javascript onDecember 03, 2019

1、建立一个独立模块用于作为公用指令的模块

1)生成模块

ng g m directive

2)进入指令模块目录

cd directive

3)生成一个只能输入数字的指令类

ng g d numberinput

4)指令模块directive.module.ts代码如下

import { NgModule, ModuleWithProviders } from '@angular/core';
import { CommonModule } from '@angular/common';
import { NumberinputDirective } from './numberinput.directive';
@NgModule({
 imports: [
  CommonModule
 ],
 declarations: [NumberinputDirective],
 exports:[ // 使引用该模块的类可以使用该指令
  NumberinputDirective
 ]
})
export class DirectiveModule { }

5)指令类numberinput.directive.ts代码如下

@Directive({
 selector: 'input[numberInput]'
})
export class NumberInputDirective {
 // tslint:disable-next-line: no-input-rename
 @Input('numberInput') numberType: string;
 constructor(private el: ElementRef) {}

 @HostListener('input', ['$event.target.value'])
 onChange(value: string): void {
  if (this.numberType.length < 1) {
   this.updateIntegerValue(value);
  } else {
   this.el.nativeElement.value = value.replace(/[^\d.]/g, '');
  }
 }
 @HostListener('blur', ['$event.target.value']) onBlur(value: number): void {
  if (this.numberType.length >= 1) {
   this.updateFloatValue(value);
  }
 }
 updateIntegerValue(value: string): void {
  this.el.nativeElement.value = value.replace(/[^\d]/g, '');
 }
 updateFloatValue(floatValue: number): void {
  const value = String(floatValue);
  const reg = /^-?(0|[1-9][0-9]*)(\.[0-9]*)?$/.test(value);
  const numBegin = /^\d/.test(value);
  const numEnd = /\d$/.test(value);
  if (reg && numBegin && numEnd) {
   this.el.nativeElement.value = value;
  } else {
   this.el.nativeElement.value = 0;
  }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript事件列表解说
Dec 22 Javascript
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
Mar 21 Javascript
javascript中获取下个月一号,是星期几
Jun 01 Javascript
jQuery实现表头固定效果的实例代码
May 24 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
Apr 12 Javascript
jQuery 中DOM 操作详解
Jan 13 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
Nov 19 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
Jul 01 Javascript
javascript淘宝主图放大镜功能
Oct 20 Javascript
详解Node.js中exports和module.exports的区别
Apr 19 Javascript
Vue下的国际化处理方法
Dec 18 Javascript
node.js实现上传文件功能
Jul 15 Javascript
JavaScript的console命令使用实例
Dec 03 #Javascript
JavaScript实现京东放大镜效果
Dec 03 #Javascript
微信小程序实现图片压缩
Dec 03 #Javascript
Ant Design Pro 下实现文件下载的实现代码
Dec 03 #Javascript
Vue.js 无限滚动列表性能优化方案
Dec 02 #Javascript
浅谈关于vue中scss公用的解决方案
Dec 02 #Javascript
详解js location.href和window.open的几种用法和区别
Dec 02 #Javascript
You might like
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
2014/08/21 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
2014/02/21 Javascript
jQuery实现移动 和 渐变特效的点击事件
2015/02/26 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
jquery常用的12个小功能
2016/07/22 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
详解Angular2 之 结构型指令
2017/06/21 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
解决vue的过渡动画无法正常实现问题
2019/10/31 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
vue中watch和computed的区别与使用方法
2020/08/23 Javascript
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
Javascript生成器(Generator)的介绍与使用
2021/01/31 Javascript
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
Python编程中实现迭代器的一些技巧小结
2016/06/21 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
python中enumerate() 与zip()函数的使用比较实例分析
2019/09/03 Python
Django实现简单网页弹出警告代码
2019/11/15 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
公务员的自我鉴定
2013/10/26 职场文书
初中英语演讲稿
2014/04/29 职场文书
派出所所长先进事迹
2014/05/19 职场文书
小学安全汇报材料
2014/08/14 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
食品安全责任书范本
2015/05/09 职场文书
班主任班级管理心得体会
2016/01/07 职场文书
Pyhton模块和包相关知识总结
2021/05/12 Python
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python