Tabbar не скрывается на подстраницах в Ioni c 5 - PullRequest
0 голосов
/ 06 марта 2020

В ioni c 4 или 5 панель вкладок не скрывается на подстраницах. Конечно, это хорошо работает в ioni c 2 или 3. Пожалуйста, дайте мне знать, как решить эту проблему.

1 Ответ

1 голос
/ 06 марта 2020

Это моё решение. Но надеюсь, лучшее решение.

  1. создать TabsService
  2. импортировать это в app.module.ts Вот полный код TabsService
import { Injectable } from '@angular/core';
import { filter } from 'rxjs/operators';
import { NavigationEnd, Router } from '@angular/router';
import { Platform } from '@ionic/angular';

@Injectable({
  providedIn: 'root'
})
export class TabsService {
  constructor(private router: Router, private platform: Platform) {
    this.platform.ready().then(() => {
      this.navEvents();
    });
  }

  public hideTabs() {
    const tabBar = document.getElementById('kidesiaTabBar');
    if (tabBar && tabBar.style.display !== 'none') {
      tabBar.style.display = 'none';
    }
  }

  public showTabs() {
    const tabBar = document.getElementById('kidesiaTabBar');
    if (tabBar && tabBar.style.display !== 'flex') {
      tabBar.style.display = 'flex';
    }
  }

  private navEvents() {
    this.router.events
      .pipe(filter(e => e instanceof NavigationEnd))
      .subscribe((e: any) => {
        this.showHideTabs(e);
      });
  }

  private showHideTabs(e: any) {
    const urlArray = e.url.split('/');
    if (urlArray.length >= 3) {
      let shouldHide = true;
      if (urlArray.length === 3 && urlArray[1] === 'tabs') {
        shouldHide = false;
      }
      try {
        setTimeout(() => (shouldHide ? this.hideTabs() : this.showTabs()), 300);
      } catch (err) {}
    }
  }
}
...