typescript - Angular 4 Uppdatera lista i Select-Option
<select [(ngModel)]="yearSelected" id="year" (click)="filterYear()">
<option value="" disabled selected>Year</option>
<option *ngFor="let y of yearsUnique" [value]="y">{{y}}</option>
</select>
<select [(ngModel)]="facultySelected" id="faculty" (click)="filterFaculty()">
<option value="" disabled selected>Faculty</option>
<option *ngFor="let f of facultiesUnique" [value]="f">{{f}}</option>
</select>
Efter att användaren väljer ett år, uppdaterar jag i min TypeScript-klass facultiesUnique-listan med fakulteter från samma år (vid den initiala laddningen laddas alla fakulteter):
filterYear() {
setTimeout(() => {
console.log("this.yearSelected " + this.yearSelected);
this.filterList = this.courseList.filter((course: CourseModel) =>
(course.Year.toString().indexOf(this.yearSelected.toString()) !== -1));
this.facultiesUnique = this.courseList.filter((course: CourseModel) =>
(course.Year.toString().indexOf(this.yearSelected.toString()) !== -1));
this.facultiesUnique = this.courseList.map(data => data.Faculty);
}, 500);
}
Men det uppdaterar inte rullgardinsmenyn med den relevanta listan. Några idéer? Tack
Svar #1
Du kan använda (change)="filterYear($event.target.value)" istället för (click)="filterYear()".
Jag har skapat en demo på Stackblitz
komponent.html
<select [(ngModel)]="yearSelected" (change)="filterYear($event.target.value)">
<option value="" disabled selected>Year</option>
<option *ngFor="let y of yearsUnique" [value]="y">{{y}}</option>
</select>
<select [(ngModel)]="facultySelected" (change)="filterFaculty($event.target.value)">
<option value="" disabled selected>Faculty</option>
<option *ngFor="let f of facultiesUnique" [value]="f.name">{{f.name}}</option>
</select>
komponent.ts
get facultiesUnique() {
return this.dummyData.filter(items => {
return items.year == this.yearSelected
})
}
Svar #2
Du kan använda
(ngModelChange)="filterFaculty()"
eller
(change)="filterFaculty()"
I funktionen filterFaculty() kan du sedan hämta det valda värdet, det är lagrat i:
this.facultySelected
