如果声明

时间:2019-06-11 02:44:47

标签: javascript angular

如何在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。

2 个答案:

答案 0 :(得分:1)

我认为您需要在括号中加上一些内容:

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

答案 1 :(得分:0)

我会尝试更明确的格式:

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

应该大致评估为:

if (data) {totalValue | moneyFormat;} else { '$0' | moneyFormat }