2017-01-13 23 views
0

我有一個Ionic2應用程序,基於離子sidemenu模板。我想顯示/隱藏基於布爾屬性(用戶登錄)的菜單項。我的問題是菜單中的項目根本不刷新,更改只在重新啓動應用程序時才生效。我app.html的Ionic2視圖元素隱藏控制器屬性

部分包含菜單:

<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> 

頁是因爲它最初是在模板中的數組,我只是增加了一個隱藏屬性:

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事件,我在此控制器中捕獲並相應地設置註冊屬性。我在這裏錯過了什麼?我如何顯示或隱藏這些菜單項?

+1

您是否再次創建this.pages數組或者只是更改this.registered的值? –

+0

@aminarghavani只是改變this.registered。它應該工作,對吧? – Perrier

+1

我認爲你的數組不會更新。 –

回答

1

this.pages數組不更新。 您需要更新this.pages數組。