2017-10-11 18 views
1

私たちはいくつかの共有データが必要なアプリケーションを開発しています。異なるコンポーネントモジュール間でAngular2.0での状態管理+

重要な情報としてローカルまたはグローバルストレージに保存することはできません。開発者ツールを開いてそこからデータを表示することはできません。

私は私たちを調査していましたが、ReduxまたはRXJSを使用することができます。

私はReduxのを通してそれを達成しようとしています

誰もが、私は店に簡単なユーザ名、国とその緯度を保存したい場合に行われるために必要なものを私を助けることができるとどのように私はそれらを使用することができ

答えて

3

はいあなたの研究に上陸しましたあなたは完璧な場所にいます。しかし、私はあなたも他の方法を使うことができると言います。

でReduxのアーキテクチャは、まずReduxのは何ですか?

Reduxのは、JavaScriptのアプリケーションのアプリケーション状態管理部であり、そして は、アプリケーション内 一方向のデータフローを有することによってフラックスアーキテクチャのコア原則に保ちます。 Reduxアプリケーションのグローバルな読み取り専用アプリケーションの状態は、 です。この状態は、 制御された方法でそれを更新するアクションのコレクションまたはストリームを「還元」することによって と計算されます。

Redux In Angular?

Reduxの状態マネージャは非常に好評されていると@ngrxの 作成、同じ 状態管理の方法と同様に Reduxのミドルウェアやツールのいくつかを実装したモジュールのセットにインスピレーションを与えてきました生態系。 @ngrxは、観測可能なパラダイムに大きく傾いているため、角度とRxJSを と一緒に使用するために作成されました。あなたは上記を参照の両方 コンポーネントは、我々が遅延読み込みをサポートしている今、アップグレードのメリット( V4に更新)ストアをngrx使用して管理され 直接ngrxに

どこにそれを使用する注目のモジュール使用して?

小さなシナリオがかなり明確にその利用を行います

私はあなたがFacebookの右使用した可能性があります期待しています: パネルを左に、あなたはナビゲーションバーのような複数のコンポーネントが表示されます Facebookのウェブサイト@見えるので、もしPを、チャットボックスなど。 に新しいメッセージが届いたら、これはいつも更新されていますか?彼らが srevicesまたはEvent Emittersに行くと、彼らは スパゲッティコードの海に巻き込まれます。実装しても、デバッグするのが非常に難しくなります。 または変更してください。

ngrx状態管理を使用すると、すべての情報が に格納され、@ のデータが変更されたときにすべてのコンポーネントが識別されます。スタックオーバーフローからこの答えを見てください は、より多くの概念をクリアします。

共有サービス

共有サービスはngrxと観測に基づいての小規模な実装に過ぎません。私はあなたのアプリのサイズが大きい場合は、ngrxの他の共有サービスに行くことをお勧めします。

同じ情報と使用方法については、リンクを確認してください。

+0

私は共有サービスを使用しようとしましたが、共有サービスの問題は、ページを更新し直さなければならない場合です。すべてのデータが失われてしまい、再度データベースにアクセスする必要があります。 – user3886602

+0

私たちはライブアプリケーションの種類のリンクを持つことができます。どこでもこのインクリメントとデクリメントが得られます:) – user3886602

+0

@ user3886602同じようなことが起こった場合、サービスからデータを取得するために何らかの警備を必要とする状態管理が必要です –

1

「Reduxプロジェクト」という意味で、ReduxはAngularでは使用できません。ただし、Reduxはパターンとしてさまざまな方法で使用できますが、いずれにしてもReduxの最も重要な部分です。どこへ行く

NgRx

一つの方法は、NgRxだろう。そのプロジェクトはReduxパターンに触発されていますが、実際には状態管理にRxJを使用しているため、実際にはあなたが探しているものかもしれません。状態管理に加えて、NgRxは開発ツールとルータとの統合を提供します。私はここで設定を要約することができますが、@ngrx/storeのreadmeには非常に明確なウォークスルーがあります:https://github.com/ngrx/platform/blob/master/docs/store/README.md

シングルトンサービス

追加した依存関係をしたくない場合は、単純にシングルトンサービスを持つことができます。角度アーキテクチャは、階層的な方法で依存性注入の理解を中心に構築されています。

サービスは、同じインジェクタによって提供される限り、シングルトンになります。しかし、注入システムを論理コンポーネントツリーで上向きに見せることはできますが、それはあなたの質問に基づいて探しているものにとっては複雑すぎるかもしれません。

ユーザーデータを格納するアプリケーション全体のサービスを提供する最も簡単な方法は、サービスをルートインジェクタまたはアプリケーションインジェクタのプロバイダとして宣言することでしょう。そのための一般的なパターンはで表示されるforRootパターンです。

希望すると便利です。

関連する問題