我有 5 个选项卡
<ion-tabs tabsPlacement="bottom" tabsLayout="icon-top" tabsHighlight="true" color="primary">
<ion-tab [root]="myCardsTabRoot" tabTitle="My Cards" tabIcon="ios-photos"></ion-tab>
<ion-tab [root]="calendarTabRoot" tabTitle="Calendar" tabIcon="calendar"></ion-tab>
<ion-tab [root]="myProfileTabRoot" tabTitle="My Profile" tabIcon="ios-person"></ion-tab>
<ion-tab [root]="searchTabRoot" tabTitle="Search" tabIcon="ios-search"></ion-tab>
<ion-tab [root]="pendingRequestsTabRoot" tabTitle="Follow Req" tabIcon="notifications" tabBadge="{{pendingRequests}}" tabBadgeStyle="danger"></ion-tab>
</ion-tabs>
我想仅在有任何待处理请求时才显示最后一个选项卡,我在下面尝试但仍然没有机会,并且在值更改时不显示/隐藏选项卡pendingRequests
,pendingRequests
的值在ionViewDidEnter()
中更改
<div *ngIf="pendingRequests > 0">
<ion-tab [root]="pendingRequestsTabRoot" tabTitle="Follow Req" tabIcon="notifications" tabBadge="{{pendingRequests}}" tabBadgeStyle="danger"></ion-tab>
</div>
和
<ion-tab *ngIf="pendingRequests > 0" [root]="pendingRequestsTabRoot" tabTitle="Follow Req" tabIcon="notifications" tabBadge="{{pendingRequests}}" tabBadgeStyle="danger"></ion-tab>
如果我重新启动应用程序,选项卡会根据pendingRequests
的值正确显示,唯一的问题是当值更改时,选项卡不会相应地隐藏/显示
这是更新pendingRequests
的代码
ionViewDidEnter() {
this.refreshPrendingRequests();
}
refreshPrendingRequests() {
this.contactsService.getContactRequestsCount(this.userInfoService.currentProfile.id)
.subscribe(count => this.pendingRequests = count);
}
更新
根据@Sampath建议,我为它创建了一个 plunker。该行为与我在应用程序上的行为不同,但这个也不起作用。
单击右上角的工具栏按钮应显示/隐藏选项卡http://plnkr.co/edit/Cx6Pyr9AihvX66ASed0s?p=preview
如果您按照以下步骤操作,则可以执行此操作。该代码是不言自明的。如果您需要任何帮助,请在下面发表评论。
注意:这只是一个工作示例。希望您可以轻松地将其转换为您的用例。
如果你在这里克隆 Git 存储库,你可以玩这个。
我已经在此示例中使用了 Ionic2 事件发布/订阅模式
步骤1:创建另一个标签页TabSet1Page
.ts
@Component({
selector: 'page-tab-set1',
templateUrl: 'tab-set1.html'
})
export class TabSet1Page {
tab1Root: any = HomePage;
tab2Root: any = AboutPage;
constructor() { }
}
。.html
<ion-tabs>
<ion-tab [root]="tab1Root" tabTitle="Home" tabIcon="home"></ion-tab>
<ion-tab [root]="tab2Root" tabTitle="About" tabIcon="information-circle"></ion-tab>
</ion-tabs>
第 2 步:
app.component.ts
@Component({
templateUrl: 'app.html'
})
export class MyApp {
rootPage: any = TabsPage;
constructor(public events: Events) {
this.subscribePendingRequests();//subscribe
this.events.publish('pending-requests', 0);//publish
}
//subscribe
subscribePendingRequests() {
this.events.subscribe('pending-requests', (data) => {
if (data > 0) {
this.rootPage = TabSet1Page;
}
else {
this.rootPage = TabsPage;
}
});
}
}
第 3 步:
关于.ts
@Component({
selector: 'page-about',
templateUrl: 'about.html'
})
export class AboutPage {
constructor(public events: Events) { }
//refresh
refreshPendingRequests() {
this.events.publish('pending-requests', 5);
}
}
关于.html
<ion-header>
<ion-navbar>
<ion-title>
About
</ion-title>
<ion-buttons end>
<button ion-button icon-only (click)="refreshPendingRequests()">
<ion-icon name="ios-funnel"></ion-icon>
</button>
</ion-buttons>
</ion-navbar>
</ion-header>