Angular指令 - 只允许输入数字和两位小数,以逗号分隔
创始人
2024-10-30 22:30:18
0次

可以使用Angular的自定义指令来实现只允许输入数字和两位小数,以逗号分隔的功能。下面是一个示例代码:

import { Directive, ElementRef, HostListener } from '@angular/core';

@Directive({
  selector: '[appNumberFormat]'
})
export class NumberFormatDirective {

  constructor(private el: ElementRef) { }

  @HostListener('input', ['$event'])
  onInputChange(event: any) {
    const initialValue = this.el.nativeElement.value;
    let newValue = initialValue.replace(/[^0-9.,]/g, ''); // 只允许数字、逗号和句点
    newValue = this.formatNumber(newValue); // 格式化数字

    if (initialValue !== newValue) {
      this.el.nativeElement.value = newValue;
      event.stopPropagation();
    }
  }

  private formatNumber(value: string): string {
    const parts = value.split('.');
    const integerPart = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ','); // 每三位数字加一个逗号

    let decimalPart = '';
    if (parts.length > 1) {
      decimalPart = parts[1].substring(0, 2); // 只保留两位小数
    }

    return integerPart + (decimalPart ? '.' + decimalPart : '');
  }
}

在模板中使用该指令:


这样,输入框就只能输入数字、逗号和句点,并且会自动格式化为每三位数字加一个逗号的形式,保留两位小数。

相关内容

热门资讯

盘点十款开挂!牛总督大厅ai智... 盘点十款开挂!牛总督大厅ai智能开挂软件,牛总督大厅有挂么辅助秘籍(本来有挂解密)1、很好的工具软件...
传递经验透视挂!九龙娱乐ai智... 传递经验透视挂!九龙娱乐ai智能透视挂技巧,九龙娱乐是如何开挂的手筋(本来有挂辅助)1、在九龙娱乐插...
科技介绍辅助挂!新玄灵ai智能... 科技介绍辅助挂!新玄灵ai智能辅助挂脚本,新玄灵怎么开挂讲义(总是发现有挂)1、上手简单,内置详细流...
分享实测透视挂!流年大厅ai智... 分享实测透视挂!流年大厅ai智能透视挂软件,流年大厅透视脚本绝活儿(好像发现有挂)一、流年大厅游戏安...
专业讨论透视挂!鸿运新版大厅a... 专业讨论透视挂!鸿运新版大厅ai智能透视挂插件,鸿运新版大厅透视软件下载绝活(原来发现有挂)1、许多...
据相关数据显示透视挂!超耀大厅... 据相关数据显示透视挂!超耀大厅ai智能透视挂app,超耀大厅开挂透视教程模块(一直有挂猫腻)一、超耀...
研究成果辅助挂!新澳娱大厅ai... 研究成果辅助挂!新澳娱大厅ai智能辅助挂插件,新澳娱大厅开挂工具指南(切实有挂技术)1、新澳娱大厅公...
每日必看透视挂!新奇玩乐ai智... 每日必看透视挂!新奇玩乐ai智能透视挂方法,新奇玩乐有挂吗资料(总是【自定义5】)1、很好的工具软件...
玩家攻略推荐开挂!老夫子大厅a... 玩家攻略推荐开挂!老夫子大厅ai智能开挂app,老夫子大厅透视方法绝活(果然有挂技术)1、上手简单,...
重大来袭辅助器!龙王大厅ai智... 重大来袭辅助器!龙王大厅ai智能辅助器工具,龙王大厅开挂脚本手册(真是发现有挂)1、下载好龙王大厅透...