代码之家  ›  专栏  ›  技术社区  ›  XardasLord

角度6输入类型编号并在逗号后显示2位数字

  •  2
  • XardasLord  · 技术社区  · 6 年前

    我想显示输入,当用户输入数字时: 20 我想要 20,00 待显示。对于更大的数字,我想看到千位分隔符 11 200,00 .

    <input type="number" (ngModelChange)="calculateSum()" (change)="calculateAmount(invoiceQuota)" [ngModel]="invoiceQuota.controls.grossAmount.value">
    

    我试图补充:

    [ngModel]="invoiceQuota.controls.grossAmount.value | number:'1.2-2' 
    

    但是它不起作用

    我找不到解决我问题的办法。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Siddharth Jain    6 年前
        import { Component, Input, NgZone, OnInit, Pipe, PipeTransform } from '@angular/core';
    
    const PADDING = '00';
    @Pipe({
        name: 'floatNumber'
    
    })
    export class FloatNumnberPipe implements PipeTransform {
        DECIMAL_SEPARATOR: string;
        THOUSANDS_SEPARATOR: string;
    
        constructor() {
        // TODO comes from configuration settings
            this.DECIMAL_SEPARATOR = '.';
            this.THOUSANDS_SEPARATOR = ',';
        }
    
        transform(value: number | string, fractionSize: number = 2): string {
            const ds = '.';
            const ts = ',';
            let [integer, fraction = ''] = (value || '').toString()
                .split(ds);
    
            fraction = fractionSize > 0
                ? ds + (fraction + PADDING).substring(0, fractionSize)
                : '';
    
            integer = integer.replace(/\B(?=(\d{3})+(?!\d))/g, ts);
            integer = integer ? integer : '0';
            return integer + fraction;
        }
    
        parse(value: string, fractionSize: number = 3): string {
            const ds = '.';
            const ts = ',';
            let [integer, fraction = ''] = (value || '').split(ds);
    
            integer = integer.replace(new RegExp(ts, 'g'), '');
    
            fraction = parseInt(fraction, 10) > 0 && fractionSize > 0
                ? ds + (fraction + PADDING).substring(0, fractionSize)
                : '';
            integer = integer ? integer : '0';
            return integer + fraction;
        }
    }
     this way you can write float number PIPE and in component ,  if (typeof modelControlname === 'string') {
    
    
    modelControlname=Math.round(Number(FloatNumnberPipe.prototype.parse(amount)) * 100) / 100);
    
      modelControlname=FloatNumnberPipe.prototype.transform(modelControlname.value);