私は、ユーザがログインしてアプリケーションをログアウトできるように、認証サービスでAngular 2アプリ(v2.1.0を使用)を持っています。ユーザーがログインするときに設定できるグローバルに利用可能なブール型プロパティを作成したいと思います。ユーザーの状態に基づいてUIの一部を簡単に表示および非表示にすることができます。 isAuthenticatedのようなものは問題ありません。しかし、グローバルクラス/サービスを作成するのが最善の方法であるか、推奨される方法が何であるかは完全にはわかりません。私はそれに対処するthis質問を見つけましたが、最終的なリリースが出る前にすべての回答が途中から出ていて、私は時代遅れと信じています。または追加する*あなたが使用することを試みることができる角2:グローバルな設定可能な観測可能なプロパティを作成しますか?
IsAuthenticated: boolean = this.authService.isAuthenticated();
最初に、ブール変数は、アプリケーションからアクセスできるように、オブジェクト(サービス)のプロパティである必要があります。認証サービスはそれに合った場所のように見えます - それはそれに属しているからです! 2つ目は、スカラープロパティではなく、オブザーバブル(サブジェクト)として持つことが有益であるということです。 – estus
したがって、auth.serviceがapp.moduleのプロバイダとして設定されている場合は、すべてのコンポーネントで使用できるはずです。その場合、auth.serviceを参照するコンポーネントでインスタンス化する必要がありますか?また、ブール値をObservableに変換する最良の方法は何ですか?ありがとう – Eddie
それは 'インスタンス化'が何を意味するかによって異なります。しかし、一般的には、ルートインジェクタのプロバイダとして定義し、他の場所に注入する必要があります。 'isAuthenticated()'がどのように動作するかによって異なります。ブール値はオブザーバブルに「変換」することはできません。 Observablesは 'isAuthenticated()'によって返された内部のauth状態を設定するメカニズムと同じメカニズムによって新しい値を提供されるべきです。 – estus