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 : '');
  }
}

在模板中使用该指令:


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

相关内容

热门资讯

目前来看!wepoker手机插... 目前来看!wepoker手机插件,中至赣牌圈挂件多少钱一个,真是真的有挂(曝光2025教程)-哔哩哔...
透视辅助!werplan免费挂... 透视辅助!werplan免费挂下载,pokemmo免费脚本,学习教程(一直真的有挂)-哔哩哔哩暗藏猫...
透视检测!wpk软件是正规的吗... 透视检测!wpk软件是正规的吗(透视)开挂辅助器(真是真的有挂)-哔哩哔哩1、wpk软件是正规的吗a...
透视私人局!hhpoker德州... 透视私人局!hhpoker德州真的假的,逸游辅助怎么下载安装,切实是真的挂(分享详细教程)-哔哩哔哩...
透视规律!哈糖大菠萝开挂(透视... 透视规律!哈糖大菠萝开挂(透视)开挂辅助脚本(确实是有挂)-哔哩哔哩哈糖大菠萝开挂是一种具有地方特色...
透视有挂!德普之星透视免费,w... 透视有挂!德普之星透视免费,wepoker有插件吗,办法教程(本来真的是有挂)-哔哩哔哩1.德普之星...
透视真的!德州来玩辅助器,起点... 透视真的!德州来玩辅助器,起点休闲辅助,确实真的是有挂(总结详细教程)-哔哩哔哩1、玩家可以在起点休...
透视必胜!hhpoker透视脚... 透视必胜!hhpoker透视脚本(透视)开挂辅助攻略(真是存在有挂)-哔哩哔哩一、hhpoker透视...
透视有挂!wepoker有辅助... 透视有挂!wepoker有辅助工具吗,哈糖大菠萝免费辅助器,总结教程(好像存在有挂)-哔哩哔哩该软件...
最新消息!拱趴大菠萝十三水辅助... 最新消息!拱趴大菠萝十三水辅助,永久免费脚本透视工具,好像真的有挂(解密分享教程)-哔哩哔哩1、完成...