Функция moment()
всегда возвращает текущую дату, поэтому, если вы строите логику, она всегда возвращает текущий месяц и год. поэтому вы должны указать год, а также месяц внутри конструктора, чтобы вернуть желаемый / прошедший месяц.
поэтому измените этот код следующим образом
/// public selectedMonth: any
private monthIterator = 0
public daysOfSelectedMonth = [];
public monthDaysAmount: number
onNextMonth() {
this.monthIterator++
/// this.selectedMonth = moment().add(this.monthIterator, 'months').format('MMMM YYYY');
this.getDaysArrayByMonth(moment("201501", "YYYYMM").add(1, 'months').format('YYYYMM'));
}
onPreviousMonth() {
this.monthIterator--
/// this.selectedMonth = moment().add(this.monthIterator, 'months').format('MMMM YYYY');
this.getDaysArrayByMonth(moment("201501", "YYYYMM").add(1, 'months').format('YYYYMM'))
}
getDaysArrayByMonth(yearMonth: string){
this.daysOfSelectedMonth = []
/// this.monthDaysAmount = moment().month(this.selectedMonth).daysInMonth() ;
this.monthDaysAmount = moment(yearMonth,'YYYYMM').daysInMonth() ;
const remainingToEvenRows = 35 - this.monthDaysAmount
const days = this.monthDaysAmount + remainingToEvenRows
for (let i = 0; i < days; i++) {
this.daysOfSelectedMonth.push(moment().month(this.selectedMonth).date(i + 1).format('Do MMMM YYYY'));
}
}
Удалите жестко запрограммированный код 201501
и передайте комбо YearMonth функции onNextMonth
и onPreviousMonth
.
Проверьте это stackblitz