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 相关文章推荐
让textarea控件的滚动条怎是位与最下方
Apr 20 Javascript
JavaScript 异步调用框架 (Part 5 - 链式实现)
Aug 04 Javascript
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
May 23 Javascript
js的onload事件及初始化按钮事件示例代码
Sep 25 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
Jun 12 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
Sep 14 Javascript
javascript中Number的方法小结
Nov 21 Javascript
Vue应用部署到服务器的正确方式
Jul 15 Javascript
微信小程序自定义select下拉选项框组件的实现代码
Aug 28 Javascript
jQuery创建折叠式菜单
Jun 15 jQuery
如何在项目中使用log4.js的方法步骤
Jul 16 Javascript
Vue 2.0双向绑定原理的实现方法
Oct 23 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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
PHP使用递归算法无限遍历数组示例
2017/01/13 PHP
php读取XML的常见方法实例总结
2017/04/25 PHP
让焦点自动跳转
2006/07/01 Javascript
Jquery工作常用实例 使用AJAX使网页进行异步更新
2011/07/26 Javascript
js网页右下角提示框实例
2014/10/14 Javascript
javascript包装对象实例分析
2015/03/27 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
微信小程序实现分享到朋友圈功能
2018/07/19 Javascript
javascript实现日历效果
2019/06/17 Javascript
JS扁平化输出数组的2种方法解析
2019/09/17 Javascript
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
2020/11/16 Javascript
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
wxPython 入门教程
2008/10/07 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
土建施工员岗位职责
2014/07/16 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
建国大业观后感
2015/06/01 职场文书
感恩父母主题班会
2015/08/12 职场文书
python OpenCV学习笔记
2021/03/31 Python
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js