問題の説明
私のアプリでは、JWT 認証を使用しています。トークンのペイロード内にユーザー ID を保存します。ログイン後、またはユーザーがページを更新しても有効なトークンがある場合、トークン内の ID を使用して、バックエンドからユーザーに関する情報を取得します。それらの情報に依存するアプリの複数のコンポーネント間でそれらの情報を共有する必要があります。
現在のソリューション
これらの情報を取得してオブジェクトに保存するサービスがあります。これらの情報に依存して適切に動作するコンポーネントには、このサービスが内部に挿入され (サービスはシングルトンです)、情報が存在しない場合に何も表示されないように、レイアウトの上に *ngIf があります。
考えられる代替ソリューション (Route Resolves)
私は最近、ルートがガードを解決することを知りました。私の場合、それらは役に立ちますか?ページを表示する前に情報をロードする必要があるガードを実装し、それを必要とするすべてのルートに追加することができます。
- それらの警備員はサービスのように機能しますか?
- それらをコンポーネントに注入できますか? それらはシングルトンですか?
- ユーザー情報を含むオブジェクトをルートに返す場合 (不要な API 呼び出しを避けるために、最初のロード後にオブジェクトをルート ガード内に格納します)、これはガード内に存在する同じオブジェクトですか、それともコピーですか? (これは、変更する必要がある場合に備えて) (このチュートリアルhttp://www.callibrity.com/blog/angular-2-route-resolvesで説明されているように)
ありがとうございました