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 new一个对象的实质
Jan 07 Javascript
用jquery实现等比例缩放图片效果插件
Jul 24 Javascript
jQuery.holdReady()使用方法
May 20 Javascript
windows8.1+iis8.5下安装node.js开发环境
Dec 12 Javascript
JavaScript中rem布局在react中的应用
Dec 09 Javascript
基于jQuery实现表格内容的筛选功能
Aug 21 Javascript
jQuery获取选中单选按钮radio的值
Dec 27 Javascript
基于JavaScript实现窗口拖动效果
Jan 18 Javascript
详解Angular5路由传值方式及其相关问题
Apr 28 Javascript
在微信小程序里使用watch和computed的方法
Aug 02 Javascript
JavaScript中条件语句的优化技巧总结
Dec 04 Javascript
AJAX检测用户名是否存在的方法
Mar 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无限分类的类
2007/01/02 PHP
PHP 面向对象 PHP5 中的常量
2010/05/05 PHP
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
php实现网页端验证码功能
2017/07/11 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
JavaScript模块模式实例详解
2017/10/25 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
在vue-cli中组件通信的方法
2017/12/16 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
微信小程序封装多张图片上传api代码实例
2019/12/30 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
[02:43]DOTA2亚洲邀请赛场馆攻略——带你走进东方体育中心
2018/03/19 DOTA
python获取当前日期和时间的方法
2015/04/30 Python
python计算一个序列的平均值的方法
2015/07/11 Python
在Python的一段程序中如何使用多次事件循环详解
2017/09/07 Python
Python求解任意闭区间的所有素数
2018/06/10 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
Python如何使用字符打印照片
2020/01/03 Python
最小二乘法及其python实现详解
2020/02/24 Python
python中Ansible模块的Playbook的具体使用
2020/05/28 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
青年创业培训欢迎词
2014/01/10 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
刑事法律意见书
2015/06/04 职场文书