selectedOptions 未使用 ngModel 在 MatselectionList 上更新

selectedOptions is not updating on MatselectionList with ngModel

我有不同 类 的 MatSelectionList。 第一次当我 select 类 它会将学生关联到这个 类.

这工作正常,但问题是当我再次进入对话时 select 已经 selected 类 的学生然后选中现有 类未检查。

我正在将关联的 类 id 推入 selectedOptions。 selectedOptions 包含值,但未更新 Ui。

HTML 内容

<mat-selection-list [(ngModel)]="selectedOptions" ngDefaultControl>
  <mat-list-option *ngFor="let class of Classes" [value]="class.class_id">
    {{class.ClassName}}
  </mat-list-option>
</mat-selection-list>

组件内容

@Component(...)
export class MyComponent { 
  
  selectedOptions: string[] = [];

  constructor(private service:StudentService){
    this.service.getStudentElement().subscribe((result)=> {
      this.selectedStudents.forEach((student) => {
        this.filteredStudents = result.filter(studentElement => {
          return studentElement.student == student.uid;
        });
      this.associatedClassForSelectedStudents(this.filteredStudents);
    })
  })

  associatedClassForSelectedStudents(selectedStudents: any){
    selectedStudents.forEach(element=> {
      if(element.class){
        this.selectedOptions.push(element.class)
      }
    })
  }

}

this.service.getStudentElement() 订阅者发出的值:

[
  {
    student: "261a134847d-e814379eaea6"
    uid: "9dd97ede-8943-b8f471317d14"
    class: "11111111-ee9d-ed1401907fa9"
   }
]

谁能告诉我我做错了什么?

谢谢

this.selectedOptions.push(element.class) 它没有更改对 selectedOptions 的引用,这就是为什么它不被视为更改并且所选 类 未更新的原因。

您可以尝试使用 concat 创建新数组的方法:

this.selectedOptions = this.selectedOptions.concat(element.class)