Используйте угловую трубу в стенографии if - PullRequest
0 голосов
/ 11 июня 2019

Как я могу использовать собственный канал в сокращенном выражении 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 ]

1 голос
/ 11 июня 2019

Я думаю, вам нужно заключить в скобки какую-то часть:

{{data ? (totalValue | moneyFormat) : '$0'}
0 голосов
/ 11 июня 2019

Я бы попробовал более явный формат для того, что он должен делать:

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

, которое должно быть примерно равно:

if (data) {totalValue | moneyFormat;} else { '$0' | moneyFormat }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...