我有一个基于离子侧面模板的Ionic2应用程序。我想基于布尔属性(用户登录)显示/隐藏菜单项。我的问题是菜单中的项目根本不刷新,更改只有在我重新启动应用程序时才会生效。
包含菜单的app.html的一部分:
<ion-list>
<ng-container *ngFor="let p of pages">
<button menuClose ion-item (click)="openPage(p)" *ngIf="!p.hidden">
{{p.title}}
</button>
</ng-container>
</ion-list>
pages是最初在模板中的数组,我刚刚添加了一个隐藏属性:
this.pages = [
{ title: '1', component: Page1, hidden: false },
{ title: '2', component: Page2, hidden: !this.registered },
{ title: '3', component: Page3, hidden: !this.registered },
{ title: '4', component: Page4, hidden: false },
{ title: '5', component: Page5, hidden: false },
{ title: '6', component: Page6, hidden: this.registered }
];
我在第6页上有一个注册屏幕,以便在用户未注册时显示。我还有2页(2,3),只有在用户有活动会话(已注册)时才能显示。这些反映了隐藏的财产。
登录或注册后,我发布了一个user.registered
事件,我在此控制器中捕获并相应地设置注册属性。我在这里错过了什么?如何显示或隐藏这些菜单项?
答案 0 :(得分:1)
this.pages数组不更新。 您需要更新this.pages数组。