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 相关文章推荐
js form action动态修改方法
Nov 04 Javascript
Javascript 阻止javascript事件冒泡,获取控件ID值
Jun 27 Javascript
js图片延迟加载的实现方法及思路
Jul 22 Javascript
jQuery下的动画处理总结
Oct 10 Javascript
搭建pomelo 开发环境
Jun 24 Javascript
js实现横向伸展开的二级导航菜单代码
Aug 28 Javascript
Ubuntu系统下Angularjs开发环境安装
Sep 01 Javascript
JS设置自定义快捷键并实现图片上下左右移动
Oct 17 Javascript
element-ui如何防止重复提交的方法步骤
Dec 09 Javascript
js实现无缝轮播图效果
Mar 09 Javascript
如何优雅地取消 JavaScript 异步任务
Mar 22 Javascript
vue开发移动端底部导航条功能
Apr 08 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编程效率 引入缓存机制提升性能
2010/02/15 PHP
php生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
2013/06/13 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
php查找任何页面上的所有链接的方法
2013/12/03 PHP
一个PHP二维数组排序的函数分享
2014/01/17 PHP
destoon实现底部添加你是第几位访问者的方法
2014/07/15 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
jquery 快速回到页首的方法
2013/12/05 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
js实现二级菜单点击显示当前内容效果
2018/04/28 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
python判断windows隐藏文件的方法
2014/03/21 Python
深入解读Python解析XML的几种方式
2016/02/16 Python
Python根据文件名批量转移图片的方法
2018/10/21 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
CSS3 rgb and rgba(透明色)的使用详解
2020/09/25 HTML / CSS
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
Love, Bonito国际官网:新加坡女装品牌
2021/03/13 全球购物
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
一行代码python实现文件共享服务器
2021/04/22 Python