ionic 4:我在使用 (onChange) Select 时出错 - 显示选择特定科目的学生的选项
ionic 4: i got errror during using (ionChange) Select-Option to display students who selected specific subject
我试图向学生展示 select 在 select-option 中 selecting 主题之后,当我使用 (ionChange)=viewStudents(subject.subid,subject.name)
时我得到了错误这个错误: 无法读取未定义的 属性 'subid'
在 Object.eval [作为 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
中定义
我试图向学生展示 select 在 select-option 中 selecting 主题之后,当我使用 (ionChange)=viewStudents(subject.subid,subject.name)
时我得到了错误这个错误: 无法读取未定义的 属性 'subid'
在 Object.eval [作为 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
中定义