首页 > 解决方案 > 在 if 语句中使用 Angular Pipe

问题描述

如何在速记 if 语句中使用自定义管道?

这是我尝试使用的代码

<h1>Total Value {{data ? totalValue | moneyFormat : '$0'}}

这是我得到的错误

Template parse errors:
Parser Error: Conditional expression data ? totalValue | moneyFormat : null requires all 3 expressions at the end of the expression

所以基本上我已经建立了一个格式化货币的管道,这是我的管道

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({name: 'moneyFormat'})
export class MoneyFormatPipe implements PipeTransform {
    transform(value: number) {
        const formatter = new Intl.NumberFormat('en-US', {
          style: 'currency',
          currency: 'USD'
        });
        let formattedValue = formatter.format(value);
        formattedValue = formattedValue.slice(0, -3);
        return formattedValue;
    }
}

现在我知道这是可行的,因为我在其他场景中使用过

<p>This is your dollar amount {{dollarAmount | formatMoney}}

我错过了什么吗?我做错了吗?

请记住,为了简单起见,我所做的只是一个示例,而不是条件语句的真正功能。我完全知道我可以使用管道返回 0 美元。

标签: javascriptangular

解决方案


我认为你需要用括号括起来一些部分:

{{data ? (totalValue | moneyFormat) : '$0'}

推荐阅读