Обратите внимание, что, хотя эта реализация и не самая лучшая, и, возможно, существует еще дюжина других способов решения этой проблемы, но это был самый простой способ.Вы можете найти рабочий пример здесь: https://stackblitz.com/edit/ionic-v3-custom-tabs
может быть способ Программно добавить новый элемент ion-tab, но я не могу найти его на ионных документах, но здесьмой взгляд на реализацию, основанный на этом вопросе
Шаг 1:
в настоящее время у нас есть 4 элемента вкладки, мы добавляем дополнительные элементы вкладки, которые нам нужны.
<ion-tab [root]="tab4Root" show= "false" tabIcon="person"></ion-tab>
<ion-tab [root]="tab5Root" show= "false" tabIcon="cash"></ion-tab>
<ion-tab [root]="tab6Root" show= "false" tabIcon="settings"></ion-tab>
ПРИМЕЧАНИЕ атрибут show show: в соответствии с ionic docs скрывает элемент tab.https://ionicframework.com/docs/api/components/tabs/Tab/#input-properties это создает элементы ion-tab, но скрывает их.
step 2:
нам нужна ссылка на элемент ion-tabs, который уже был определен с помощью <ion-tabs #myTab>
page: tabs.ts
// мы получаем вкладки ion, используя ссылку на шаблон, а затем присваиваем ее локальной переменной tabRef
@ViewChild('myTab') tabRef: Tabs;
presentPopover(event) {
let popover = this.popoverCtrl.create(PopoverPage, {navpage: this}); // note the navpage: this
popover.present({ ev: { target: event.btn._elementRef.nativeElement } });
}
нам нужен способ ссылки на этот компонент (TabsPage), поэтому мы передаем его как параметры навигации https://ionicframework.com/docs/api/components/popover/PopoverController/#create https://ionicframework.com/docs/api/navigation/NavParams/#get
шаг 3:
page: popover.html
<button ion-item (click)="openPage(4)">
<ion-icon name="person" item-left></ion-icon>
Profile Page
</button>
<button ion-item (click)="openPage(5)">
<ion-icon name="cash" item-left></ion-icon>
Sales Report
</button>
<button ion-item (click)="openPage(6)">
<ion-icon name="settings" item-left></ion-icon>
Setting
</button>
// каждый номер представляет индекс вкладки страницы, которую мы хотимдля навигации: https://ionicframework.com/docs/api/components/tabs/Tabs/#selecting-a-tab
Страница: PopoverPage
// the tabs page ref
tabsPageRef: TabsPage;
constructor(
public navCtrl: NavController,
public navParams: NavParams
) {
// recall the navpage: this from the TabsPage?
this.tabsPageRef = this.navParams.get('navpage');
}
openPage(pageName: any) {
// here, we are using the reference of the TabsPage to access the local variable tabref
this.tabsPageRef.tabRef.select(pageName)
}