JavaScript

超轻量级php框架startmvc

angular inputNumber指令输入框只能输入数字的实现

更新时间:2020-09-25 04:12:02 作者:startmvc
1、建立一个独立模块用于作为公用指令的模块1)生成模块nggmdirective2)进入指令模块目录cd

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;
 }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

angular inputNumber 数字 angular inputNumber 数字输入框