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>

请注意两点:

  1. 我将整个 subject 对象作为选项值传递
  2. 我将 viewStudents 传递给 selected 对象,只要它在 ngModel
  3. 中定义