Наличие тире, если значения полей равны нулю

#html #css #angular #angular8 #angular9

Вопрос:

Я работаю над угловым приложением. У меня есть следующий код в моем html

       <div>{{ data.date | date:'d-MMM-y' || '-' }}</div>
       <div>{{ data.id  || '-' }}</div> 
 

Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда для любого поля, такого как дата и идентификатор, значение, поступающее из API, равно нулю, следующий div смещается вверх. Я хочу, чтобы div находился в том конкретном месте, где он находится, когда значение не равно нулю. Итак, я хочу иметь тире «-» всякий раз, когда значение, поступающее из API, равно нулю. Поэтому в своем коде я добавил a || '-' во все поля, но все равно это не работает. Я не получаю «-» в своем html. Как я могу это сделать?

Ответ №1:

Вы были близки к результату, вам просто не хватает некоторых скобок:

 <div>{{ (data?.date) ? (data.date | date:'d-MMM-y') : '-' }}</div>
 

Рабочий Стекблитц: https://stackblitz.com/edit/angular-vb4peg?file=src/app/app.component.ts

Просто прокомментируйте строку this.data["date"] = new Date(); , и вы увидите, как она изменится.

Ответ №2:

В этом случае вы можете использовать нулевой оператор объединения

это будет похоже на:

   <div> {{ (data.date | date:'d-MMM-y') ?? '-' }} </div>
  <div> {{ data.id ?? '-' }} </div>