これはan earlier question I postedへのフォローアップの質問です。定数はどのように角度2+で保存されますか?
私の質問では、サービス上のメソッドを呼び出すときに奇妙なログ出力が発生しました。 console.log
出力では、サービスが明確に定義したデータは印刷されませんでした。サービスメソッドを呼び出すときに使用されるコンテキストは、呼び出しを行うコンポーネントのコンテキストであることが判明しました。
私の質問はです:Angular 2+の複数のコンポーネントに変数を格納する適切な方法は何ですか?
例えば、変数を保持したいとします(isLoggedIn
)。この変数はどこで保持しますか?コンポーネントがそのサービスを呼び出すと(つまり、authService.getLoggedInStatus()
)、サービスのisLoggedIn
の値がネイティブに取得されるのではなく、コンポーネント内の同じ名前の変数が潜在的に取得されるため、サービスに保持することはできません。
共有変数をどのように角度で記録していますか?
上
詳しい情報はなぜ「authService.getLoggedInStatusは()」コンポーネントに同じ名前の変数の値を与えるのでしょうか?これは有効な方法です。 @Injectablesはシングルトンであり、値を格納するのに適しています。 – omeralper
私は個人的に、私のプロジェクトの1つで、ログインに必要なすべての 'components'によって呼び出される' Service'に 'BehaviourSubject'を使ってログインしたユーザデータを格納するという、この非常に正確なアプローチを使用しました。それは完璧に正常に動作します。さらに、すべてが1つのサービスに「サブスクライブ」されていれば、それが変更されたときにすべてのコンポーネントがその変更を知っているという利点があります。 I.Eログアウトはすべての「購読者」によって自動的に登録されます –