【问题标题】:Angular HTML: compare string datetime to current datetimeAngular HTML:将字符串日期时间与当前日期时间进行比较
【发布时间】:2022-01-16 22:41:48
【问题描述】:

如何将“2022-01-07 15:43:00”字符串变量与 Angular html 的 *ngIf 中的当前日期时间进行比较?

请帮助和指导。

【问题讨论】:

  • 您可以尝试很多事情。我认为最简单的方法是在您的组件中创建一个方法来执行以下操作:return new Date() === new Date('2022-01-07 15:43:00')。然后您的*ngIf 条件将类似于*ngIf="yourMethod()"

标签: angular date datetime date-pipe


【解决方案1】:

您可以在ngIf 指令中使用函数,例如*ngIf="showBasedOnDate(date)" 在您的TS 文件中创建此函数并在那里处理所有逻辑。返回truefalse 以显示元素。

<div *ngIf="showBasedOnDate(date)"> 
   I am shown
</div>

showBasedOnDate(date) {
 // here you can have as much logic as you would like, based on your needs. 
 return (date === new Date() );
}

【讨论】:

  • 我可以在showBasedOnDate函数中检查不到吗?我有一个字符串日期时间,需要用当前日期时间检查is less than
  • 你可以在函数中做任何你想做的逻辑。
【解决方案2】:

问题是:这真的是你想要的吗?该元素只会在很短的时间内可见。我猜你想在达到给定时间后显示一个元素。

还请记住,将方法绑定到模板通常被认为是不好的做法,因为它会在任何渲染周期中重新计算。 绑定到在给定时间发出的异步 Observable 将是一种更好的方法。

所以你的绑定可能看起来像

*ngIf="(isNow$ | async)===true"

你的具体实现可能类似于

isNow$: Observable<boolean>;
...
const dateDifference = date-Date.now();
this.isNow$ = of(true).pipe(delay(dateDifference);

这基本上可以让你计算时刻,然后从那时起在 dom 中显示元素。 如果您真的只想在时间相等的那一刻看到 DOM 元素并立即再次将其关闭,您应该将 Observable 重新发送为 false。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 2019-09-26
    • 2021-08-03
    • 2017-05-04
    • 2011-11-14
    相关资源
    最近更新 更多