cordova-plugin-network-information を使用して Ionic2 アプリを開発しています。app.ts から接続および切断イベントをサブスクライブしており、NavController への参照と Loading コンポーネントをサブスクライブに渡すことができるようにしたいと考えています。 () コールバックを使用しているため、切断のイベントが発生するたびに、UI の上に Loading オーバーレイをユーザーに表示できます。コールバックで、「this」オブジェクトへの参照が「SafeSubscriber」というオブジェクトに変更されていることがわかります。これは、Observer オブジェクトの rxjs 型付きクラスだと思います。ここでの問題は、それらを取得する方法がないことです。 App オブジェクト自体にアクセスするために、Chrome DevTools を使用して app.ts でこのコードにインスタンスを使用できます。
これが私のコードです:
ngOnInit()
{
// Nav Controller:
this.nav = <NavController>this.app.getComponent('nav');
// Disconnect Detection
let disconnectSubscription = Network.onDisconnect().subscribe(() =>
{
console.log('Disconnect Detected');
// Push Loading into nav stack here...!
// this.nav.present(this.loading); <- no this object...
});
}
これは、Chrome DevTools 内で「this」オブジェクトを照会したときに得られるものです (これは、元のコンテキストをラムダ [太い矢印] 関数内に保持することになっていますが、これは正しいですか?)
サブスクリプションを実行する前に「その」オブジェクトを設定しようとしましたが、変数「これ」がコールバックの「この」スコープに干渉しないようにしましたが、このシナリオでは機能しませんでした。「それ」はすぐに宣言されたためですsubscribe() (let that: any = this;) の前は、切断イベントが発生したときにコールバック内で未定義でした。
これは、UI を直接変更するコードを配置するのに最適な場所ではないことはわかっていますが、ここで必要なのは、接続が検出されず、ユーザーがアプリ内の特定のページを表示しています。
これには非常に簡単でエレガントな解決策があるはずですが、見つけられないようです。subscribe() 関数にパラメーターを渡す方法はありますか? 私が必要とする参照を持つある種のオブジェクト?
前もって感謝します。