2016-08-31 13 views
0

tabs.tsからタブの各ページに値を渡す必要があります。だからこのようなものがあります:Ionic2 tabs/app、ts passing value

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; 

タブの各ページに値(ユーザー)を渡すにはどうすればいいですか?私はこのコードのいくつかの組み合わせを試してみましたが、いくつかのエラーを取得しませんでした - たとえば、this.tab1RootをonAuthStateChangedメソッドに配置すると、「最大呼び出しスタックサイズを超えました」というメッセージが表示されます。 http://ionicframework.com/docs/v2/api/components/tabs/Tab/ - これの90%を理解していますが、この値をどのように渡すべきかはまだ分かりません...

私の2番目の質問 - 現在のユーザーを受け取り、各ページに価値として渡す方法はありますか? ?私はプロバイダや何かを使用すると良いでしょうか?

3番目の質問:このコードをapps.tsよりtabs.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の起動時にapp.ts内のプロバイダを使用して一度認証を行うことです。