Я хочу использовать момент js в приложении js, а также иметь возможность протестировать свои услуги. Поэтому я предоставил момент js, как показано ниже, в моем модуле
providers: [
{
provide: 'MomentWrapper',
useFactory: async () => moment(),
scope: Scope.REQUEST,
},
],
и в моем сервисе
constructor(
@Inject('MomentWrapper') private momentWrapper: moment.Moment
)
Тогда у меня есть такой метод
private calculateNextRun(every: number, period: SchedulePeriod): string {
const currentDate = this.momentWrapper.tz('America/Toronto');
let nextDate = null;
nextDate = currentDate.add(every, period);
console.log(currentDate.format(), nextDate.format(), every, period, );
return nextDate.toISOString();
}
Этот метод будет вызываться в al oop и должен получить текущую дату, добавить к ней несколько дней / недель / .. и вернуть ее.
Проблема в том, что он сохраняет старое значение, поэтому каждый раз это входит в метод не начиная с текущей даты
вывод на консоль
2020-01-25T16:39:19-05:00 2020-01-25T16:39:19-05:00 6 d
2020-02-15T16:39:19-05:00 2020-02-15T16:39:19-05:00 3 w
2020-02-16T16:39:19-05:00 2020-02-16T16:39:19-05:00 1 d
Если вы видите первую дату, которая currentDate
продолжает изменяться
Есть ли какие-либо способ преодолеть эту проблему, без создания новой службы, как эта
import * as moment from 'moment-timezone';
@Injectable()
export class MomentService {
moment(): moment.Moment {
return moment();
}
}