2016-08-31 26 views
0

我需要將值從tabs.ts傳遞到每個選項卡頁面。所以我有這樣的事情:Ionic2選項卡/應用程序,傳遞值的值

constructor(public navParams: NavParams) { 
...// config 

firebase.auth().onAuthStateChanged((user) => { 
    if (user) { 
    // If there's a user take him to the home page. 
    this.user = []; 
    this.user.push(user); 
    this.rootPage = HomePage; 


    } else { 
    // If there's no user logged in send him to the LoginPage 
    this.rootPage = LoginPage; 
    } 
}); 
} 

this.tab1Root = HomePage; 
this.tab4Root = ProfilePage; 

如何將值(用戶)傳遞給每個頁面的標籤?我試着用這個代碼的幾個組合,但不工作(得到一些erros - 例如,如果我把this.tab1Root ... onAuthStateChanged方法,那麼它給我︰「最大調用堆棧大小超過」)。這裏是文檔:http://ionicframework.com/docs/v2/api/components/tabs/Tab/ - 我明白這90%,但仍然不知道我應該如何通過這個值...

我的第二個問題 - 有沒有更好的方式接收當前用戶並將他作爲值傳遞給每個頁面?如果我使用提供者或者其他什麼會更好?

第三個問題:在tabs.ts中使用此代碼比在app.ts中更好嗎?

謝謝!

回答

1

您可以使用[rootParams]在離子標籤

<ion-tab ... [rootParams]="user"></ion-tab> 

屬性在選項卡中的文件:

constructor(navParams: NavParams) { 
    console.log("Passed params", navParams.data.user); 
} 

第二種方式是使用事件:http://ionicframework.com/docs/v2/api/util/Events/ 它可以讓你任意之間共享數據你的網頁。

提供商是一個不錯的選擇。

  1. 這取決於。更好的辦法是一次授權 - 在app.ts中使用提供者 - 當應用程序啓動時。