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 相关文章推荐
niceTitle 基于jquery的超链接提示插件
May 31 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
Dec 04 Javascript
JavaScript实现强制重定向至HTTPS页面
Jun 10 Javascript
javascript背景时钟实现方法
Jun 18 Javascript
详解JavaScript中Hash Map映射结构的实现
May 21 Javascript
基于JavaScript实现多级菜单效果
Jul 25 Javascript
简单的网页广告特效实例
Aug 19 Javascript
详解用函数式编程对JavaScript进行断舍离
Sep 18 Javascript
js合并两个数组生成合并后的key:value数组
May 09 Javascript
Vue 中对图片地址进行拼接的方法
Sep 03 Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
Aug 17 Javascript
vue开发简单上传图片功能
Jun 30 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实现登陆验证码(类似条行码状)
2006/10/09 PHP
PHP面向对象编程快速入门
2006/12/14 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
使用prototype.js进行异步操作
2007/02/07 Javascript
javascript jQuery插件练习
2008/12/24 Javascript
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
2010/03/23 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
javascript基于DOM实现权限选择实例分析
2015/05/14 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
jQuery蓝色风格滑动导航栏代码分享
2015/08/19 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
GOJS+VUE实现流程图效果
2018/12/01 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
async/await让异步操作同步执行的方法详解
2019/11/01 Javascript
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
Python中的getopt函数使用详解
2015/07/28 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
详解用Python进行时间序列预测的7种方法
2020/03/13 Python
如何快速一次性卸载所有python包(第三方库)呢
2020/10/20 Python
python 获取字典键值对的实现
2020/11/12 Python
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
.NET常见笔试题集
2012/12/01 面试题
上班迟到检讨书
2014/01/10 职场文书
法制宣传实施方案
2014/03/13 职场文书
标准版离职证明书
2014/09/12 职场文书