【问题标题】:ionic / angular2 dynamically close FABsionic / angular2 动态关闭 FAB
【发布时间】:2018-02-13 23:18:49
【问题描述】:

使用 ionic 的 FABS 但在循环中,因此不能使用 id 检索组件并关闭:

<ion-item ion-item *ngFor="let e of elements">
    <ion-fab top right>
        <button ion-fab mini><ion-icon name="more"></ion-icon></button>
        <ion-fab-list side="bottom">
            <button ion-fab (click)="click(e)"><ion-icon name='create'></ion-icon></button>
        </ion-fab-list>
    </ion-fab>
</ion-item>

关闭 FAB 的标准解决方案需要 ION-FAB 上的 ID,然后可以访问外部 ION-FAB 组件并调用 .close():

    <ion-fab top right #fab>
        <button ion-fab mini><ion-icon name="more"></ion-icon></button>
        <ion-fab-list side="bottom">
            <button ion-fab (click)="click(fab,e)"><ion-icon name='create'></ion-icon></button>
        </ion-fab-list>
    </ion-fab>

由于这些工厂是动态生成的,我无法提供 ID 并且不知道如何从内部按钮事件访问父 ION-FAB 组件,所以我如何访问父 FAB 组件以在其上调用 .close() ?

【问题讨论】:

    标签: angular ionic-framework ionic2 floating-action-button


    【解决方案1】:

    试试这个 HTML

    <ion-fab top right *ngFor="let e of elements; let currentIndex = index;"
    [style.margin-left.px]="currentIndex*45" #fabList>
            <button ion-fab mini id="{{'fab_btn'+ currentIndex}}"><ion-icon name="more"></ion-icon></button>
            <ion-fab-list side="bottom">
                <button ion-fab (click)="click(currentIndex)"><ion-icon name='create'></ion-icon></button>
            </ion-fab-list>
    </ion-fab>
    

    打字稿

    import { ViewChildren, QueryList } from '@angular/core';
    
    @ViewChildren('fabList')fabList : QueryList<FabContainer>; //Use @ViewChildren instead of @ViewChild
    
    click(currentIndex: any) {
        //let id = 'fab_btn' + currentIndex.toString();
        //document.getElementById(id).click();
        let currentFab: FabContainer = this.fabList._results[index]; //Get current clicked FabContainer object from index 
        currentFab.close(); 
    }
    

    演示 - https://stackblitz.com/edit/ionic-fab-tab-open-niy8wg-close-dynamically-utrxfs?file=pages/home/home.ts

    【讨论】:

    • 似乎您使用自定义 ID 模拟从内部列表到外部按钮的单击,但问题是在单击 fab 按钮时关闭 fab 列表,就像能够做 ion -fab(外部工厂不是按钮).close()
    • 您说“单击晶圆厂按钮时关闭晶圆厂列表”,但这是ion-fab 的默认功能。当你点击ion-fab时,它会自动关闭ion-fab-list
    • 当我尝试它时没有这样做,在文档中指定手动执行 ionicframework.com/docs/api/components/fab/FabContainer 搜索 fab.close() ,我想这样做但它声明我需要一个实例容器并且不知道如何在循环中引用它
    • 所以您只想使用fab.close(); 关闭fab-list
    • 参考演示链接,打开fab-list 之一并单击最后一个close 按钮,它将关闭当前打开的fab-list。那么功能上的区别是什么?
    猜你喜欢
    • 2021-07-31
    • 2017-07-16
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    相关资源
    最近更新 更多