如何通过编程关闭激活的ion-fab列表容器及在TypeScript中集成?
你不需要引入额外的特殊依赖,只需要通过框架的模板引用能力获取<ion-fab>组件的实例,就能直接调用close()方法,以下是Angular+Ionic环境下的完整实现示例:
1. 模板代码(.html文件)
给你的<ion-fab>节点添加模板引用变量,示例如下:
<ion-fab #fabRef vertical="bottom" horizontal="end" slot="fixed"> <ion-fab-button> <ion-icon name="add"></ion-icon> </ion-fab-button> <ion-fab-list side="top"> <!-- 点击子按钮时直接传fab实例到方法里 --> <ion-fab-button (click)="addPhoto(fabRef)"> <ion-icon name="camera"></ion-icon> </ion-fab-button> <ion-fab-button (click)="addFile(fabRef)"> <ion-icon name="document"></ion-icon> </ion-fab-button> </ion-fab-list> </ion-fab>
2. TypeScript代码(.ts文件)
首先从@ionic/angular导入IonFab类型,然后通过@ViewChild获取模板里的实例,或者直接接收点击事件传入的实例调用方法即可:
import { Component, ViewChild } from '@angular/core'; import { IonFab } from '@ionic/angular'; @Component({ selector: 'app-demo-page', templateUrl: './demo-page.page.html', styleUrls: ['./demo-page.page.scss'], }) export class DemoPagePage { // 方式1:通过@ViewChild主动获取全局的fab实例 @ViewChild('fabRef') private fabRef?: IonFab; // 主动触发关闭FAB的方法,可在任意业务逻辑里调用 public manualCloseFab(): void { this.fabRef?.close(); } // 方式2:接收模板传过来的fab实例,调用close方法 public addPhoto(fab: IonFab): void { // 你的业务逻辑 console.log('添加照片逻辑执行'); // 关闭FAB列表 fab.close(); } public addFile(fab: IonFab): void { // 你的业务逻辑 console.log('添加文件逻辑执行'); fab.close(); } }
补充说明
- 如果是React/Vue版本的Ionic,只需要对应替换为对应框架的ref获取组件实例的逻辑即可,
IonFab实例自带close()方法,不需要额外封装 - 调用前加可选链
?.是为了避免实例未完成初始化时调用导致的空值报错
内容的提问来源于stack exchange,提问作者Duncan Law
相关产品推荐
相关产品推荐

