【问题标题】:Incrementing date in angular template在角度模板中增加日期
【发布时间】:2020-12-21 17:33:05
【问题描述】:

我有类似下面的内容,我需要逐步显示日期

<ul>
  <li *ngFor="let item of items">
      <h2>
       {{item.name}}
      </h2>
      <p >
        {{item.description}}
      </p>
      <time>{{date | date:'dd/MM/yyyy'}}</time>
  </li>
</ul>

日期需要显示为第一个项目,它显示今天的日期,然后是明天,依此类推。 如果有一种方法只能通过使用 html 模板来完成,那就更好了。或者只是帮助以最好的方式做到这一点。

【问题讨论】:

  • 您能否再解释一下它正在显示什么以及您希望它显示什么,以及您的items 数组的外观示例?此外,在使用日期管道时,您不需要使用 &lt;time&gt; 标记。您可以使用 div 或 span。
  • 解决方案与 items 数组没有任何关系,它可能只是在需要使用索引时出现
  • 主要问题是关于显示第一项的日期是今天的日期,然后是第二项的明天的日期,依此类推
  • 明白了。我错过了date 不是item.date

标签: html angular date


【解决方案1】:

我认为仅使用日期管道无法做到这一点,它的主要用途是将当前日期转换为不同的显示。不添加/删除。您可以做的是创建自己的具有偏移选项的日期管道

解决方案 1

创建新管道并使用矩库

import {Pipe, PipeTransform} from '@angular/core';
import * as moment from 'moment';

@Pipe({name: 'customDate'})
export class CustomDatePipe implements PipeTransform {
  transform(date, format = 'dd/MM/yyyy', dayOffset = 0, monthOffset = 0, yearOffset = 0) {
    return moment(new Date(date)).add(dayOffset, 'days')
                                 .add(monthOffset, 'months')
                                 .add(yearOffset, 'years')
                                 .format(format);
  }
}

然后在html中这样引用它

<ul>
  <li *ngFor="let item of items; let i = index">
      <span>{{date | customDate: 'dd/MM/yyyy': i}}</span>
  </li>
</ul>

解决方案 2

或者你可以使用 vanilla javascript Date 和自定义管道

import {Pipe, PipeTransform} from '@angular/core';

@Pipe({name: 'customDate'})
export class CustomDatePipe implements PipeTransform {
  transform(date, format = 'dd/MM/yyyy', dayOffset = 0) {
    return new Date(date).addDays(dayOffset);
  }
}

并像这样引用它

<ul>
  <li *ngFor="let item of items; let i = index">
      <span>{{date | customDate: i | date: 'dd/MM/yyyy'}}</span>
  </li>
</ul>

【讨论】:

  • 这真的是最好的方法吗,为什么这比我只调用一个返回递增日期的函数要好。
  • 因为该函数将在每个摘要周期触发。管道将检查是否有任何变化,如果没有变化,它不会触发任何逻辑。您可以在添加到 html 与管道的函数中使用 console.log() 仔细检查这一点
  • @Nnnnn 这里是video 解释管道如何优化程序。我会跳到 25 分钟。
猜你喜欢
  • 2022-06-15
  • 1970-01-01
  • 2020-04-18
  • 1970-01-01
  • 2018-07-12
  • 2011-04-10
  • 2011-06-11
相关资源
最近更新 更多