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)
我有不同 类 的 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)