我对应用程序具有选项卡视图的位置有要求。第四个选项卡具有弹出窗口,并且该弹出窗口包含更多3个菜单,这些菜单应充当一个选项卡,这意味着它应像其他3个选项卡一样打开。
我已经尝试过,但是该页面没有显示,因为它没有将弹出页面设置为选项卡视图内的根页面。
tabs.html
<ion-tabs #myTab>
<ion-tab [root]="tab1Root" tabIcon="theme-business"></ion-tab>
<ion-tab [root]="tab2Root" tabIcon="theme-table"></ion-tab>
<ion-tab [root]="tab3Root" tabIcon="theme-like"></ion-tab>
<ion-tab (ionSelect)="presentPopover($event)" tabIcon="ios-apps-outline"></ion-tab>
</ion-tabs>
tabs.ts
presentPopover(event) {
let popover = this.popoverCtrl.create(TabPopoverPage, {});
popover.present({ ev: { target: event.btn._elementRef.nativeElement } });
}
tabPopover.html
<ion-content padding>
<ion-list>
<button ion-item (click)="openPage('SalonDetailsPage')">
<ion-icon name="theme-profile" item-left></ion-icon>
Profile Page
</button>
<button ion-item (click)="openPage('SalesReportPage')">
<ion-icon name="theme-wallet" item-left></ion-icon>
Sales Report
</button>
<button ion-item (click)="openPage('SettingsPage')">
<ion-icon name="theme-setting" item-left></ion-icon>
Setting
</button>
</ion-list>
</ion-content>
tabPopover.ts
openPage(pageName: any) {
// this.navCtrl.setRoot(pageName);
this.navCtrl.push(pageName);
}
我们将不胜感激!
答案 0 :(得分:1)
请注意,虽然此实现不是最佳方法,并且可能还有许多其他方法可以解决此问题,但这是最简单的方法。 您可以在此处找到一个有效的示例:https://stackblitz.com/edit/ionic-v3-custom-tabs
也许可以通过编程方式添加一个新的ion-tab项,但是我无法在ionic docs上找到它,但这是我根据此问题进行的实现
我们目前有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>
注意表演属性 显示:根据离子文档,隐藏tab元素。 https://ionicframework.com/docs/api/components/tabs/Tab/#input-properties 这将创建离子标签元素,但将其隐藏。
我们需要引用已经用<ion-tabs #myTab>
定义的ion-tabs元素
页面:tabs.ts
///我们正在使用模板引用获取离子表,然后将其分配给局部变量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
页面: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)
}