2016-05-25 11 views
1

私のapp.htmlには、役割のリストを含むサイドメニューがあります。アプリの上部にあるツールバーは私のlandingPage.htmlの一部であり、ヘッダーに "App Name:Role"と表示されます。ユーザーが新しい役割をクリックするたびに、ランディングページのツールバーに反映されるようにしたいと思います。クリック時のクラス間のデータ転送角度2 /イオン2

私のlandingPage.tsファイルにはchangeRole(newRole)という機能がありますが、それは私のapp.tsのクリックイベントからどのようにアクセスするのかわかりません。

イベントをリスンして、クリックしたものを別のクラスの関数に送信するにはどうすればよいですか?

答えて

1

私の答えhereからグローバルデータを共有するためのサービスを注入する方法の例:グローバル・データを保持するために、プロバイダを使用し


はイオン2ベータ6で私のために働いている、と私はそれがあると信じてionic g provider GlobalServiceお知らせ生成されたサービスは、トンであなたのサービスを注入@Injectable

で飾られている方法:角2

でのお勧めは、コマンドラインからプロバイダを生成します彼は@Appクラスです;あなたはプロバイダの配列にそれを宣言することにより、次の操作を行います。

@App({ 
     templateUrl: 'build/app.html', 
       providers: [GlobalService] , 
       config: {} // http://ionicframework.com/docs/v2/api/config/Config/ 
      }) 

これは、すべてのページにづけしているプロバイダの単一のインスタンスを作成します。あなたがそれを使用する必要がどこに、は、プロバイダの配列に宣言し、なくんページのコンストラクタに:

@Page({ 
     templateUrl: 'build/pages/new-page/new-page.html', 
     }) 
     export class NewPage{ 

     constructor(public globalService: GlobalService) { 
    } 

    someFunction(){ 
    this.globalService.someGlobalFunction(); 
    } 
+0

私はまだ私のページファイルにグローバルサービスをインポートする必要がありますか?試してもエラーが出ますが、インポートしようとするとファイルが見つからないようです。私は依存性注射の明白な一歩を欠いていますか?私はまだこれでかなり新しいです。 – discodane

+0

はい、次のような行をインポートする必要があります。 '../../ providers/global-service/global-service''から' import {GlobalService} 'をインポートするには、正しいパスに調整する必要がありますあなたのアプリで –

+0

私は1つの部分が欠落しています。アプリケーション側のメニューでロールの変更が表示されたら、 'GlobalService'で' setCurrentRole'関数を呼び出しますが、currentRoleが変更されたことを「新しいページ」に通知するにはどうすればよいですか? – discodane

2

コンポーネントの相互作用のために、いくつかの共通のパターンを詳細にここで良いのリソースがあります:

https://angular.io/docs/ts/latest/cookbook/component-communication.html

あなたのユースケースの場合は、おそらくあなたの役割 'の値をカプセル化するサービスを定義することをお勧めします。その値にアクセスする必要があるコンポーネントにそのサービスを注入します。

関連する問題