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编码的几个方法详细介绍
Jan 06 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
Jan 11 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
Apr 21 Javascript
javascript设计简单的秒表计时器
Sep 05 Javascript
JavaScript基础重点(必看)
Jul 09 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
Aug 02 Javascript
不间断循环滚动效果的实例代码(必看篇)
Oct 08 Javascript
js实现百度登录框鼠标拖拽效果
Mar 07 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
Sep 13 Javascript
浅谈Node 异步IO和事件循环
May 05 Javascript
基于layui轮播图满屏是高度自适应的解决方法
Sep 16 Javascript
vue npm install 安装某个指定的版本操作
Aug 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
多个PHP中文字符串截取函数
2013/11/12 PHP
PHP小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
php生成二维码不保存服务器还有下载功能的实现代码
2018/08/09 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
用正则获取指定路径文件的名称
2007/02/27 Javascript
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
JS限制上传图片大小不使用控件在本地实现
2012/12/19 Javascript
JQuery实现表格中相同单元格合并示例代码
2013/06/26 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
2017/12/05 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
使用Python读取大文件的方法
2018/02/11 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
详解CSS3选择器的使用方法汇总
2015/11/24 HTML / CSS
预备党员思想汇报范文
2014/01/11 职场文书
业务总经理岗位职责
2014/02/03 职场文书
初中英语课后反思
2014/04/25 职场文书
求职自我评价范文100字
2014/09/23 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
诺贝尔奖获得者名言100句:句句启人心智,值永久收藏
2019/08/09 职场文书
python状态机transitions库详解
2021/06/02 Python