css 有没有什么方法可以让我自定义datepicker不使用角材料或引导?

nbysray5  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(122)

我被要求在Angular 不使用角材料或引导像下面的图像中的datepicker:

我怎样才能让它成为可能?
ps-业务需求。

kknvjkwl

kknvjkwl2#

我想这只是一次练习,所以只有几分
一个日历只有两个 *ngFor内容

<div class="week" *ngFor="let week of days">
  <div class="day" [class.muted]="!day.isMonth" *ngFor="let day of week">
    {{day.day}}
    </div>
</div>

其中days是一个数组[6][7]
数组的第一个索引从0到5,第二个索引从0到6
您可以使用两个辅助功能:

private getIncrement(year: number, month: number): number {
    let date = new Date("" + year + "-" + month + "-1");
    let increment = date.getDay() > 0 ? date.getDay() - 2 : 5;
    return increment;
  }

  private getDate(
    week: number,
    dayWeek: number,
    year: number,
    month: number,
    increment: number
  ) {
    let date: any;
    let day = week * 7 + dayWeek - increment;
    if (day <= 0) {
      let fechaAuxiliar = new Date("" + year + "-" + month + "-1");
      date = new Date(
        fechaAuxiliar.getTime() + (day - 1) * 24 * 60 * 60 * 1000
      );
    } else {
      date = new Date("" + year + "-" + month + "-" + day);
      if (isNaN(date.getTime())) {
        let fechaAuxiliar = new Date("" + year + "-" + month + "-1");
        date = new Date(
          fechaAuxiliar.getTime() + (day -1) * 24 * 60 * 60 * 1000
        );
      }
    }
      return {
        date:date,
        day:date.getDate(),
        isMonth:date.getMonth()==month-1
      };
  }
}

当您有一个月和一个年时,计算增量,然后创建formArray of days

private generateDays(year:number,month:number)
{
  const increment=this.getIncrement(year,month)
  const days=[];
  [0,1,2,3,4,5].forEach((x,index)=>
  {
    days.push([])
    for (let y=0;y<7;y++){
      days[index].push(this.getDate(x,y,year,month,increment))
    }
  })
  return days
}

更新:我附加了stackblitz
更新日期:2020年4月23日:,变更月份时已纠正

注意:这只是如何制作日历,你需要放入一个div,使其变得可见/不可见,在日历中标记所选的一天...

相关问题