仅单个值时自动选择级联离子下拉菜单

时间:2019-03-14 10:58:08

标签: angular typescript ionic-framework ionic3

我正在处理级联离子选择下拉菜单(一个离子选择选择的值将取决于另一个),因此我必须实现:如果离子选择选择中只有一个选项,则应该自动选择该选项而不是打开操作表,并且在自动选择选项之后,应向下层叠到其他离子选择选项。

例如:-有一个建筑物,楼层,房间的层次结构,我们将有三个选择框,这将取决于先前的选择。

层次结构级别为建筑物> .....楼层> ....房间

如果选择了建筑物,并且如果它仅包含一个楼层,则第二个下拉菜单应自动填充为B1楼层,并且它应向下层叠到下一个离子选择房间,然后依次包含一个房间它应该会自动选择最后一个选择下拉列表。

这是我尝试过的:

  <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)"

没有被解雇。

0 个答案:

没有答案