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之锁定表格栏位
Jun 29 Javascript
用document.documentElement取代document.body的原因分析
Nov 12 Javascript
jquery 双色表格实现代码
Dec 08 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
Nov 21 Javascript
JS数组去重(4种方法)
Mar 27 Javascript
jQuery选择器_动力节点Java学院整理
Jul 05 jQuery
ReactNative中使用Redux架构总结
Dec 15 Javascript
微信小程序网络请求封装示例
Jul 24 Javascript
react 父子组件之间通讯props
Sep 08 Javascript
JavaScript 严格模式(use strict)用法实例分析
Mar 04 Javascript
ES6函数实现排它两种写法解析
May 13 Javascript
JS创建或填充任意长度数组的小技巧汇总
Oct 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
一个程序下载的管理程序(二)
2006/10/09 PHP
PHP管理内存函数 memory_get_usage()使用介绍
2012/09/23 PHP
php实现可运算的验证码
2015/11/10 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
node.js不得不说的12点内容
2014/07/14 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
nodejs个人博客开发第四步 数据模型
2017/04/12 NodeJs
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
Web制作验证码功能实例代码
2017/06/19 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
VSCode 配置React Native开发环境的方法
2017/12/27 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
2020/09/17 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
python读取html中指定元素生成excle文件示例
2014/04/03 Python
python中的hashlib和base64加密模块使用实例
2014/09/02 Python
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
实例讲解Python中函数的调用与定义
2016/03/14 Python
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
Python科学计算之Pandas详解
2017/01/15 Python
Soft Cotton捷克:来自爱琴海棉花的浴袍
2017/02/01 全球购物
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
《猫》教学反思
2014/02/26 职场文书
期中考试后的感想
2015/08/07 职场文书
教师远程研修感悟
2015/11/18 职场文书
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL