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 相关文章推荐
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
Apr 27 Javascript
JavaScript的变量作用域深入理解
Oct 25 Javascript
JS获取select的value和text值的简单实例
Feb 26 Javascript
详解JavaScript中的forEach()方法的使用
Jun 08 Javascript
JavaScript操作class和style样式代码详解
Feb 13 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
Aug 24 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
May 23 Javascript
Angularjs的启动过程分析
Jul 18 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
Mar 03 Javascript
Node批量爬取头条视频并保存方法
Sep 20 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
Nov 01 Javascript
JS如何把字符串转换成json
Feb 21 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
windows8.1下Apache+Php+MySQL配置步骤
2015/10/30 PHP
PHP实现浏览器中直接输出图片的方法示例
2018/03/14 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
鼠标放在图片上显示大图的JS代码
2013/03/26 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
vue集成kindeditor富文本的实现示例代码
2019/06/07 Javascript
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python实现数通设备tftp备份配置文件示例
2014/04/02 Python
python实现的用于搜索文件并进行内容替换的类实例
2015/06/28 Python
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
Django的分页器实例(paginator)
2017/12/01 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
python 反编译exe文件为py文件的实例代码
2019/06/27 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
理工类毕业自我鉴定
2014/02/20 职场文书
2014村务公开实施方案
2014/02/25 职场文书
课外小组活动总结
2014/08/27 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
简易离婚协议书(范本)
2014/10/25 职场文书
2015年入党决心书
2015/02/05 职场文书
清明节随笔
2015/08/15 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书
python 爬取豆瓣网页的示例
2021/04/13 Python
MySQL创建管理HASH分区
2022/04/13 MySQL