html - 获取选定的选项卡以切换图标 Ionic 5

标签 html angular typescript ionic-framework ionic5

当有人选择它时,我试图将我的标签图标从填充更改为轮廓(选中时填充,未选中时轮廓)。
关于 Ionic 5 Tabs Doc有一个 getSelected() 方法,但没有关于如何使用它的示例。
我的想法是使用 ionTabsDidChange 检测何时有人点击了标签,然后使用 getSelected() 并将图标从“home”设置为“home-outline”。
Tabs.html

<ion-tabs>
  <ion-tab-bar slot="bottom">
    <ion-tab-button class="tab-btn" tab="home">
      <ion-icon name="{{ homeIcon }}"></ion-icon>
      <ion-label>Home</ion-label>
    </ion-tab-button>

    <ion-tab-button class="tab-btn" tab="price">
      <ion-icon name="{{ priceIcon }}"></ion-icon>
      <ion-label>Price Search</ion-label>
    </ion-tab-button>
<ion-tabs>
Tabs.ts
export class TabsPage {
  public homeIcon = 'home';
  private homeFilled = 'home';
  private homeOutline = 'home-outline'
  public priceIcon = 'search-outline';
  private priceFilled = 'search';
  private priceOutline = 'search-outline';

  ionTabsDidChange() {
    let selectedTabName = getSelected();
    // Stuff to switch icon from filled to outline and vice versa
  }

}
问题是我不知道如何使用 getSelected(),我试过 adding ViewChild like this stackoverflow ,但 getSelected() 不是函数(更改为 IonTabs 因为 Ionic 5 中不存在 Tabs。
此时,我能想到的唯一解决方案是保存选项卡状态并为所有内容添加单击功能。

最佳答案

您正朝着正确的方向前进,仍然缺少一些要点。在 Ionic 文档中,您正在阅读的“事件”不能在页面中直接访问,而无需将它们绑定(bind)到组件本身,为了使用 ViewChild,您还需要为组件提供一个 id:
标签页.html

<ion-tabs #tabs (ionTabsDidChange)="setCurrentTab()">
“tabs”将是组件的 id,每当 ionTabsDidChange 事件被触发时,它都会调用 setCurrentTab 方法,它应该在您的页面上声明。
然后在页面中,正如您已经提到的,您需要添加一个 ViewChild(现在可以使用 id)并使用 getSelected() 方法。
标签文件
export class TabsPage {
  @ViewChild('tabs', { static: false }) tabs: IonTabs;

...

  setCurrentTab() {
    this.selectedTab = this.tabs.getSelected();
  }

}
瞧,应该是这样:-)

关于html - 获取选定的选项卡以切换图标 Ionic 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62926093/

相关文章:

Angular 5 无法读取未定义的属性 'remove'

javascript - 如何在 Typescript 的 Angular 指令类中添加 Controller

javascript - 接口(interface)中的 TypeScript 可选函数

html - Joomla 的自定义 Html 模块不是对代码进行样式化,而是只是将其打印到屏幕上

javascript - 多个html文件可以使用单个javascript文件吗?

Enter 上的 Angular(点击)事件按下发送 MouseEvent 而不是 KeyboardEvent

angular - 比多个 ngIf 更好的方法

typescript - 实现具有调用签名和返回 "this"的方法的接口(interface)

html - 如何根据内容在页面加载时设置 textarea 高度的样式?

javascript - 如何使主体在 ScrollDown 上向左滚动,反之亦然