我被要求在Angular 不使用角材料或引导像下面的图像中的datepicker:
我怎样才能让它成为可能?ps-业务需求。
hk8txs481#
为什么不直接使用html元素<input type="date">呢?https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date
<input type="date">
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,使其变得可见/不可见,在日历中标记所选的一天...
2条答案
按热度按时间hk8txs481#
为什么不直接使用html元素
<input type="date">
呢?https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date
kknvjkwl2#
我想这只是一次练习,所以只有几分
一个日历只有两个 *ngFor内容
其中days是一个数组[6][7]
数组的第一个索引从0到5,第二个索引从0到6
您可以使用两个辅助功能:
当您有一个月和一个年时,计算增量,然后创建formArray of days
更新:我附加了stackblitz
更新日期:2020年4月23日:,变更月份时已纠正
注意:这只是如何制作日历,你需要放入一个div,使其变得可见/不可见,在日历中标记所选的一天...