Я пытаюсь зациклить значения настроек FormArray. Довольно новый для javascript.
Ниже TeamWorkingDate
устанавливается одинаковая дата для каждой из 7 групп FormGray в Team
FormArray и устанавливается последняя в цикле дата + 7 дней.
Я пробовал много вариантов forEach и ответов @ Закрытие JavaScript внутри циклов - простой практический пример , поскольку я считаю, что это должно быть какой-то проблемой закрытия.
Мое понимание замыканий ограничено, несмотря на чтение этого. В данном случае - это то, что setValue
имеет доступ к переменной i вне вызова функции, и поэтому «видит» i = 7? Я думал let
останавливает эту проблему?
setDates(date: moment) {
var arr = [];
for(let i = 0; i < 7; i++) {
let nextDate = date.clone().add(i, 'day');
arr.push(nextDate);
(<FormArray>this.myForm.get('Teams')).controls[i]
.get('TeamWorkingDate').setValue(arr[i]);
}
}
Моя форма:
ngOnInit() {
this.myForm = this.fb.group({
Teams: this.fb.array([])
});
const team = this.fb.group({
TeamWorkingDate: '',
...
})
for (let i = 0; i < 7; i++) {
(<FormArray>this.myForm.get('Teams')).push(team);
}
}
РЕДАКТИРОВАТЬ: изменено на let nextDate = date.clone().add(i, 'day');
вместо var