【发布时间】:2020-02-12 21:45:10
【问题描述】:
我有一个 Angular 项目,我有一个 ngFor,我想用来自 Angular 的 Date 管道显示值。
<tr *ngFor="let p of months">
<td>{{ p.month | date:'LLLL' }}</td>
</tr>
p.month 的值基本上可以是 1、2 或 3 等等。
管道无法正常工作,总是显示“一月”。
但如果我只显示{{ p.month }},那么在每个循环中我都会看到正确的值(1、2、3 等等)
我已经看到有不同的人有这个问题,我能找到的只是补充:
changeDetection: ChangeDetectionStrategy.OnPush
但是如果我添加这个,现在我的页面加载为空白,没有控制台错误,只是一个空白页面(页面的第一个元素是 ngFor,如果我在此之前添加一个带有字符串的简单 div,它会正确显示)
那么为什么ChangeDetection 会破坏我的页面?如何正确使用 ngFor 中的 Angular 日期管道?
【问题讨论】:
-
1、2、3 不是 Date 实例。 DatePipe 会将 1 解释为
new Date(1),即 1970 年 1 月 1 日。 -
要了解为什么使用
OnPush策略会破坏您的代码,我们需要整个应用程序。您可以尝试使用ngZone和runoutsideangular来查看是否可以解决问题。
标签: angular