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 对象模型 执行模型
Oct 15 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
Sep 17 Javascript
js将字符串转成正则表达式的实现方法
Nov 13 Javascript
js动画效果制件让图片组成动画代码分享
Jan 14 Javascript
超赞的jQuery图片滑块动画特效代码汇总
Jan 25 Javascript
Js获取图片原始宽高的实现代码
May 17 Javascript
关于AngularJs数据的本地存储详解
Jan 20 Javascript
详解使用fetch发送post请求时的参数处理
Apr 05 Javascript
vue.js的手脚架vue-cli项目搭建的步骤
Aug 30 Javascript
JS中appendChild追加子节点无效的解决方法
Oct 14 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
Oct 23 Javascript
Vue自动构建发布脚本的方法示例
Jul 24 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+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
PHP实现多文件上传的方法
2015/07/08 PHP
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
Vue 项目部署到服务器的问题解决方法
2017/12/05 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
Layui弹出层 加载 做编辑页面的方法
2019/09/16 Javascript
JavaScript原生数组函数实例汇总
2020/10/14 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
[02:25]专访DOTA2负责人Erik 国际邀请赛暂不会离开西雅
2014/07/21 DOTA
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
python使用列表的最佳方案
2020/08/12 Python
基于Python制作一副扑克牌过程详解
2020/10/19 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
python 实现有道翻译功能
2021/02/26 Python
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
柯基袜:Corgi Socks
2017/01/26 全球购物
结构工程研究生求职信
2013/10/13 职场文书
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
违反学校规定检讨书
2014/01/18 职场文书
师德师风个人反思
2014/04/28 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
婚前协议书范本
2014/10/27 职场文书
Python max函数中key的用法及原理解析
2021/06/26 Python
直播实况, OMG破敌三路五十分钟大战神技局摩托车
2022/04/01 DOTA