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 支持链式调用的异步调用框架Async.Operation
Aug 04 Javascript
javaScript 利用闭包模拟对象的私有属性
Dec 29 Javascript
jquery $.fn $.fx是什么意思有什么用
Nov 04 Javascript
深入理解Javascript中的循环优化
Nov 09 Javascript
微信JS接口汇总及使用详解
Jan 09 Javascript
Javascript中的数组常用方法解析
Jun 17 Javascript
Angular.js 实现数字转换汉字实例代码
Jul 14 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
Sep 20 Javascript
解决Vue打包之后文件路径出错的问题
Mar 06 Javascript
React降级配置及Ant Design配置详解
Dec 27 Javascript
vue实现文字加密功能
Sep 27 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
Sep 11 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
Content-type 的说明
2006/10/09 PHP
smarty实例教程
2006/11/19 PHP
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
php标签云的实现代码
2012/10/10 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
2015/09/23 PHP
JavaScript Eval 函数使用
2010/03/23 Javascript
jquery.AutoComplete.js中文修正版(支持firefox)
2010/04/09 Javascript
如何用ajax来创建一个XMLHttpRequest对象
2012/12/10 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
jQuery使用addClass()方法给元素添加多个class样式
2015/03/26 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
JS实现简单的天数计算器完整实例
2017/04/28 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
详解VUE项目中安装和使用vant组件
2019/04/28 Javascript
Python中的id()函数指的什么
2017/10/17 Python
Django web框架使用url path name详解
2019/04/29 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
Python如何读取文件中图片格式
2020/01/13 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
浅谈CSS3动画的回调处理
2016/07/21 HTML / CSS
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
Linux机考试题
2015/10/16 面试题
高级Java程序员面试要点
2013/08/02 面试题
护士求职自荐信范文
2014/03/19 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
群众路线表态发言材料
2014/10/17 职场文书
先进学校事迹材料
2014/12/30 职场文书
收银员岗位职责范本
2015/04/07 职场文书
PHP中国际化的字符串排序和比较对象详解
2021/08/23 PHP
python多次执行绘制条形图
2022/04/20 Python
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python