仅当货币类型具有分数时,才将金额显示为带分数的货币

时间:2019-04-23 18:10:13

标签: angular typescript

我使用此代码显示金额:

 <td>{{transaction.amount}} {{transaction.currency}}</td>

当前我的输出为:56030美元

类似的东西:

<td [ngSwitch]="transaction.currency">
 <span *ngSwitchCase="'JPY'">/// Display 1000 JPY</span>
 <span *ngSwitchCase="'USD'">/// Display 10.00 USD</span>
 <span *ngSwitchDefault class="badge">/// Display 10.00 USD</span>
</td>

如何根据货币添加.00?

4 个答案:

答案 0 :(得分:2)

这不一定能回答您的问题,但是您是否考虑过使用内置货币Pipe?

https://angular.io/api/common/CurrencyPipe

答案 1 :(得分:1)

您可以使用内置货币管道作为

<td [ngSwitch]="transaction.currency">
     <span *ngSwitchCase="'JPY'">
        {{ transaction.amount | currency:'JPY':'symbol':'1.0-0'}}
     </span>
     <span *ngSwitchCase="'USD'">
        {{ transaction.amount | currency:'USD':'symbol':'1.2-2'}}
     </span>
     <span *ngSwitchDefault class="badge">
        {{ transaction.amount | currency:'USD':'symbol':'1.2-2'}}
     </span>
</td>

货币管道过滤器的最后一个属性以

格式描述数字信息
{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}

此处美元将至少有一个整数,最小和最大为2个数字,而日元则没有小数

答案 2 :(得分:1)

您现在可以稍作改动,以实现所需的目标:

<td *ngIf='transaction.currency=="JPY"'>{{transaction.amount|number:'1.0-0'}} {{transaction.currency}}</td>

<td *ngIf='transaction.currency!=="JPY"'>{{transaction.amount|number:'1.2-2'}} {{transaction.currency}}</td>

第一个管道“ | number:'1.2-2'”将其格式化为数字,点后有2个小数,另一部分只是交易对象中的文本

建议的更好的解决方案是

<td>{{ transaction.amount | currency:transaction.currency:'' }} {{ transaction.currency }}</td>

或者如果您不介意左侧的货币代码,则可以使用:

<td>{{ transaction.amount | currency:transaction.currency:'code' }}</td>

答案 3 :(得分:0)

尝试使用货币过滤器:

public class Employee {

    private String firstName;
    private String lastName;
    private int age;

    //Aggregation Java example
    private Address address;


    public void setAddress(Address address) {
            this.address = address;
    }
    public Address getAddress() {
            return address;
    }

}