Я работаю над выпадающим списком каскадного ионного выбора (значение одного варианта выбора ионов будет зависеть от другого), в этом я должен добиться, чтобы, если в выборе выбора ионов был только один вариант, он автоматически выбирал эта опция вместо открытия листа действий и после автоматического выбора опции должна каскадно перейти к другому выбору ion-select.
Пример: - Существует иерархия зданий, этажей, комнат, и у нас будет три поля выбора, которые будут зависеть от предыдущего выбора.
Уровни иерархии: Строительство>… .. Этаж> …… .Номера
И если выбрано Здание и если оно содержит только один этаж, то второй выпадающий список должен автоматически заполняться этажом В1, и он должен каскадно переходить к следующему выбору номеров, выбранному ионами, и который, в свою очередь, также содержит одну комнату, затем он должен автоматически выбрать последний выпадающий список.
Вот что я пробовал:
<div *ngFor="let h of hierarchyLevels; let i = index;">
<ion-label stacked padding-bottom>{{h.name}}</ion-label>
<ion-select name="hierachySelected"
formControlName="{{h.key}}"
interface ="action-sheet"
placeholder="Please Select...."
(ionChange)="selectionChanged($event, i)">
<ion-option *ngFor="let hierarchy of hierarchyOptions[h.key]"
[selected]="worklistOptions[w.key].length === 1"
[value]="hierarchy">
{{hierarchy.name}}
</ion-option>
</ion-select>
</div>
selectionChanged(hierarchy: Location, level: number): void {
if (hierarchy) {
this.storeSelectedLevel(hierarchy, level);
this.clearDescendantLevels(level);
let nextLevel = level + 1;
if (this.minimumLevelSelect > 0) {
this.allowSaveHierarchy = (this.minimumLevelSelect <= nextLevel);
} else {
this.allowSaveHierarchy = (nextLevel === this.totalLevels);
}
this.fetchLevelOptions(hierarchy, nextLevel);
}
private fetchLevelOptions(locationSelected: Location, level: number): void {
if (level === 0) {
this.hierarchyOptions[this.hierarchyLevels[level].key] =
this.hierarchy.filter(el => el.partOf === undefined);
} else if (level < this.totalLevels && event) {
this.hierarchyOptions[this.hierarchyLevels[level].key] =
this.hierarchy.filter(el => el.partOf === 'Location/' + locationSelected.id)
}
}
используя этот код, мой второй выпадающий список показывает значение floor, но событие
(ionChange)="selectionChanged($event, i)"
не уволят.