ユーザーがログインしているかどうかに基づいて異なるリンクを表示するナビゲーションバーを実装しようとしています。コンポーネントリフレッシュを角2で実行する
tokenNotExpired()
機能を提供するangular2-jwt
ライブラリを使用しています。
私は2つのルート、/home
と/login
を持っています。私は<router-outlet>
の外にあるnavbarコンポーネントを持っています。つまり、ルートが変更されるたびに初期化されるのではなく、1回だけ初期化されます。
ログインに成功した後、私はrouter.navigate(['/home])
を呼び出しています。ホームとログインの両方は、ユーザがそれぞれのngOnInit()
機能でログインしているかどうかをチェックします。したがって、ホームコンポーネントは、ログインしているユーザを検出することができます。
ただし、ログインが通知されていないため、ナビゲーションバーを更新できません。
誰でもこの変更検出を実装する正しい方法を教えてください。
ありがとうございました。
ありがとうSefa。私は 'angular2-jwt'ライブラリを使用しているので、' userLoggedIn:bool = false; 'を置き換えて、 'tokenNotExpired()'の出力を返す関数を使って変更します。 –
これは動作します。しかし、 '[hidden] ="!authService.userLoggedIn "'のように、ビュー内から直接サービス変数にアクセスしています。これは本当にこれを行う正しい方法ですか(私はそうは思わない)? BehaviorSubjectを使用して、変更を伝播してNavbar経由でそれらに登録するはずがありませんでしたか? – Devner