Я получаю сообщение об ошибке:
StudentsAttendanceCreateComponent.html: 9 ERROR TypeError: Невозможно прочитать свойство "insertData" неопределенного на students-attendance-create.component.ts: 96 в Array.forEach()
submitForm(form: NgForm) {
let cursoID: number;
Object.keys(form.value).forEach(function (key) {
if (key === 'cursoId') {
cursoID = form.value[key];
}
});
Object.keys(form.value).forEach(function (key) {
if (key !== 'cursoId') {
const json = {
EstudianteId: key,
asistencia: form.value[key],
cursoId: cursoID
};
this.insertData(json);
}
});
}
insertData(json: any) {
this.service.studentsAsistencia(json)
.subscribe(() => {
this.openSnackBar('Datos insertados correctamente.', 'OK');
});
// this.clearForm();
}
Спасибо !!!!
forEach
принимает функцию обратного вызова, this
недоступно внутри, если вы не связываете его. Один из способов сделать это через функцию стрелки ()=>
автоматически связывает ее.
Object.keys(form.value).forEach((key) => {
if (key !== 'cursoId') {
const json = {
EstudianteId: key,
asistencia: form.value[key],
cursoId: cursoID
};
this.insertData(json);
}
});
}
Его опорная ошибка. Если вы хотите использовать переменную компонента или метод внутри обратного вызова, вы должны использовать функцию лямбда (стрелка) вместо использования литеральной или анонимной функции.
Чтобы использовать this
ключевое слово внутри функции обратного вызова, вы должны использовать функцию стрелки, ваш код должен выглядеть так:
submitForm(form: NgForm) {
let cursoID: number;
Object.keys(form.value).forEach((key) => {
if (key === 'cursoId') {
cursoID = form.value[key];
}
});
Object.keys(form.value).forEach((key) => {
if (key !== 'cursoId') {
const json = {
EstudianteId: key,
asistencia: form.value[key],
cursoId: cursoID
};
this.insertData(json);
}
});
}
insertData(json: any) {
this.service.studentsAsistencia(json)
.subscribe(() => {
this.openSnackBar('Datos insertados correctamente.', 'OK');
});
// this.clearForm();
}
вы можете прочитать о различиях здесь: qaru.site/questions/48091/...