2017-07-19 15 views
0

現在、角度2のプロジェクトに取り組んでいます。私は2つのコンポーネント(1.ヘッダーと2.ページコンテンツの表示)を実装しました。 サービスを開くと、login/registerから始めます。現時点では、他のすべてのメニュー項目を非表示にしたいと考えています。 私がログインしている場合は、すべてのメニュー項目を表示する必要があります。メニューバーを角度2で動的に表示/非表示

現在、* ngIfを使用してメニュー項目を表示したり非表示にしたりしています。私の問題は、ページを開始してログインしていない場合、メニュー項目がそこにないことです(これは問題ありません)。私はこの方法でログインしてかないよしかし、私はログインしている場合、ページのコンテンツとコンテナだけがメニューバーを内容を変更していません...

現在、私がチェック:

<div *ngIf="user != null"> 
 
...menu items... 
 
</div>

私は、ページ全体をリロードする場合、これは動作します - しかし、私は手動で更新することなく、リアルタイムでメニュー項目を非表示/表示するためのよりよい方法があるはずだと思いますか?

この問題をどのように解決することができますか教えてください。

+0

。@ CodingMole-関連コード、お試しした例、関連するスクリーンショットの詳細をご提供ください。また、あなたの質問を(より良い方法で)構造化する必要があります(https://stackoverflow.com/help/how-to-ask)。 –

+0

'angularjs'は、javascriptに基づいて、すなわちバージョン1xに基づいた角度です。 「角型」は、TypeScriptで角度が書き換えられます。バージョン2と4です。適切な製品名/用語とタグを使用してください。 – Igor

+0

ありがとうございます。私はメニュー項目を表示するヘッダーを持っています。メインフレーム(他のコンポーネント)にログインしている場合、より特定のユーザー関連のメニュー項目を表示したいと思います。私はこの方法でログインしてかないよ場合 現在、私がチェックします。私は、ページ全体をリロードする場合

...menu items...
これは動作します - しかし、私は本当のメニュー項目を表示/非表示するためのよりよい方法があるはずだと思います手動でリフレッシュせずに – CodingMole

答えて

1

ユーザの状態を追跡するグローバルユーザサービスを作成し、ユーザがログインしている場所に関するリアルタイムの更新を常に得るために、コンポーネントが登録できるようにしてください。

その時点でngifソリューションが気に入らない場合は、いくつかの選択肢があります。全く新しいコンポーネントを作成して、ユーザーがログインしているときにのみアクセスできるルートに表示するか、ナビゲーションメニュー項目を制御し、ngforを実行するメニュー項目配列を作成するようなことをします。

あなたは現在、ユーザー状態(ユーザー変数)をどこで追跡していますか、この変数の変更を通知されているコンポーネントはどのようになっていますか?推測するだけで、おそらくあなたのヘッダのコンストラクタまたはoninit関数のローカルストレージに基づいてユーザ変数を設定し、それから離れることになります。これにより、ユーザーの1回の値は取得されますが、後で更新されることはありません。そのため、ページの更新時に正しく表示されます。

関連する問題