我试图显示在选择选项中选择科目后选择特定科目的学生,当我使用 (ionChange)=viewStudents(subject.subid,subject.name)
我得到了错误,这个错误。Cannot read property 'subid' of undefined at Object.eval [as handleEvent] (MarksViewPage.html:127)事实上,当我使用 viewStudents(subject.subid,subject.name)
在(点击)其他方法其工作。
请帮我解决这个错误
html:
<ion-item>
<ion-select [(ngModel)]="selected" (ionChange)="viewStudents(subject.subid,subject.name)">
<ion-select-option *ngFor="let subject of choosedSubjects_viewMarks;let i=index"
[value]="subject.subid">{{subject.name}}</ion-select-option>
</ion-select>
</ion-item>
.ts文件。
async viewStudents(sub_id,sub_name) {
this.SujectID = sub_id;
this.title = sub_name;
this.enable_subjects = false;
**this.enable_students = true;**
this.searchlistResult = false;
this.ionViewDidEnter() ;
}
当我禁用其他列表时,这个列表会显示。
async viewMarks(studentid,input) {
console.log(studentid, this.teach_id, this.SujectID, input);
return new Promise(resolve => {
let body = {
aksi: 'add_marks',
sid: studentid,
tid: this.teach_id,
subID: this.SujectID,
marks: input
}
this.accessProvds.postData(body,'proses_api.php').subscribe((res: any) => {
if (res.success == true) {
this.presentToast('Added successfuly!');
this.ionViewDidEnter();
} else {
this.presentToast(res.msg);
}
});
});
你的 subject
被定义为ngFor指令的迭代器。然而,你的 ionChange
是定义在外面的。因此它不知道什么是主题。
为了使你的代码能够正常工作,你的模板应该如下所示。
<ion-item>
<ion-select [(ngModel)]="selected"
(ionChange)="viewStudents(selected.subid,selected.name)">
<ion-select-option *ngFor="let subject of choosedSubjects_viewMarks; let i=index"
[value]="subject">{{subject.name}}</ion-select-option>
</ion-select>
</ion-item>
请注意两个重要的点:
subject
对象作为选项值viewStudents
的 selected
对象,只要它在 ngModel