我遇到了错误:
StudentsAttendanceCreateComponent.html:9错误TypeError:无法读取Array.forEach()处students-attendance-create.component.ts:96处未定义的属性“ insertData”
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();
}
谢谢!!!!
答案 0 :(得分:1)
其参考错误。如果要在回调中使用组件变量或方法,则应使用lambda(箭头)函数,而不要使用文字或匿名函数。
答案 1 :(得分:1)
forEach
具有回调函数,除非绑定this
,否则内部不可用。一种实现方法是通过arrow function ()=>
进行自动绑定。
Object.keys(form.value).forEach((key) => {
if (key !== 'cursoId') {
const json = {
EstudianteId: key,
asistencia: form.value[key],
cursoId: cursoID
};
this.insertData(json);
}
});
}
答案 2 :(得分:1)
要在回调函数中使用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();
}
您可以在此处了解不同之处: https://stackoverflow.com/a/34361380/7269215