首页 > 解决方案 > NgIf 有时使用 2 条件无法正常工作

问题描述

在这篇文章之后隐藏聊天,如果在与最后一次聊天的同一分钟内,我收到了这样的错误

在此处输入图像描述

红线,时间没有出现,但在它下面(绿线)它再次出现。绿线就是我想要的,我正在使用这个 ngIf 语句

<div *ngIf="message.time === messages[i - 1]?.time && message.author !== messages[i-1]?.author" [ngClass]="{ 'bot': message.author === 'bot',
  'user': message.author === 'user' }">
<time class="time">{{ message.time | date:'shortTime' }}</time>
</div>

我认为它应该可以正常工作,但是我在哪里做错了,知道吗?

编辑 2

所以我认为错误是当分钟改变看到这个

在此处输入图像描述

编辑

我有类似的问题,我想让时间分隔符每天只显示一次 在此处输入图像描述

这就是我编码的方式

  <ng-container
    *ngIf="(message.time | date: 'dd MMMM yyyy') === (time  | date: 'dd MMMM yyyy'); then today else showDate">
  </ng-container>
  <ng-template #today>
    <p class="dividerDate">Today</p>
  </ng-template>
  <ng-template #showDate>
    <p class="dividerDate">{{ message.time }}</p>
  </ng-template>

标签: javascripthtmlangular

解决方案


我们应该检查不同的时间而不是相反,问题不是很清楚,但试试这个

"message.time !== messages[i - 1]?.time || message.author !== messages[i-1]?.author"

如果作者与消息不同或时间不同,那么我们将显示时间

我希望这是您需要的逻辑,如果不是只用时间进行实验,然后从那里开始,例如显示时间是否不同,无论作者如何

"message.time !== messages[i - 1]?.time"


推荐阅读