Tengo el siguiente ciclo que verifica si la fecha es festiva y, a partir de ahí, llena la Fecha [].
if ( this._dateHelperService.isBusinessDay(temporalDate) && !this._dateHelperService.isHoliday(temporalDate) ) { mNumberOfDays += 1; console.log(temporalDate.toDateString()); console.log('entre') let tmpDate: Date[] = [...result.datesToPaint, temporalDate]; result.datesToPaint = tmpDate; console.table(result.datesToPaint) // console.log(mNumberOfDays); } // re creating the date using a helper service if (mNumberOfDays !== numberOfDays) { temporalDate = this._dateHelperService.addDays(temporalDate,1); } // helper service: addDays(date: Date, days: number): Date { date.setDate(date.getDate() + days); return date; }
El problema es que cada vez que asigno un nuevo elemento, todos los datos de la lista se modifican al último elemento. Aquí hay una instantánea del problema:
Soy consciente de que esto puede estar relacionado con el puntero que tengo en la lista global que creé al comienzo del método para result.datesToPaint. Intenté usar el operador de propagación y asignar la fecha a otra fecha temporalmente. Sigue sin funcionar. ¡Gracias por la ayuda!
Gracias a @Tobias S. La solución fue ajustar mi método addDays a lo siguiente:
addDays(date: Date, days: number): Date { return new Date(date.setDate(date.getDate() + days)); }
:) ¡Tenga cuidado al completar matrices de fechas!