2016-12-08 8 views
1

シングルトンであると思われるサービスがあり、複数のビューからアクセスする必要があります。 providersの配列をapp.components.tsに追加することで、ほとんどのページからサービスのシングルインスタンスにアクセスできます。Ionic2 :: Modalページでシングルトンサービスを使用する

ただし、コンポーネントがModalControllerを使用してモーダルとしてロードされている場合、これは失敗します。それは私にNo provider for XYZエラーを与えます。

ModalControllerによってロードされたコンポーネント内でシングルトンサービスを使用するにはどうすればよいですか?

+0

また、そのモジュールでそのサービスをインポートしてみましたか? –

+0

'@ Component'の' providers:[XYZ] 'に追加してください – Ivaro18

+0

コードを追加してください。私はモーダルとしてオープンされたページからシングルトンサービスを使用しており、適切に動作しています。 @PardeepJain。 – sebaferreras

答えて

1

だから、私は次のようにそれを動作させることができました:

1. providers配列にapp.module.tsでサービスを追加サービス

@Injectable() export class MyService { ... } 

の作成2.

providers: [{provide: ErrorHandler, useClass: IonicErrorHandler}, MyService] 

3. servを消費する任意のPageまたはModal

@Component(...) 
export class MyModalOrPage { 
    constructor(public service: MyService) { ... } 
} 

ヴィオラで氷!ページおよびモーダル全体で使用可能なシングルトンサービスインスタンス。魅力的な作品! =)

+0

あなたはシングルトンだと思っています。このサービスの変数はセッションレベルに留まりますか?またはアプリケーションレベルですか? (またはコンポーネントレベル - 私はホップしません)。つまり、基本的に、ユーザーごとに生成される「MyService」、すべてのユーザーに対して1つ、またはそれを使用するコンポーネントごとに1つです。 – Ivaro18

+0

@ Ivaro18。私はそれが1人のユーザーに1つのインスタンスだと考えています。私は 'Ionic2'を使って、物理的なデバイスに配備できるアプリケーションを開発しています。したがって、各デバイスのアプリケーションには1人のユーザーしかいません。 – AweSIM

+1

私はあなたが言ったことをしましたが、まだ各コンポーネントのサービスのインスタンスを1つ取得します。それを解決する方法を知らない:S –

関連する問題