2016-07-07 1 views
1

ユーザーが/ dashboardのようなリンクに行くように強制するときに、リダイレクトしようとすると、空の場合はlocalStorageを確認する必要があります。angular2リダイレクトするlocalStorageを確認する

機能ではなくvar checkStorageを実行できないようですが、私は機能を実行しますが、自動的に起動する方法はわかりません。

関数を初期化するための推測は、ngOnInitです(角度1のinit(){}と同様です)。

export class DashboardComponent { 
 
    constructor(private router: Router) {} 
 
    
 
    var checkStorage = localStorage.getItem('username'); 
 
    if(checkStorage = null) { 
 
     this.router.navigate(['/']); 
 
    } 
 

 
    logoutAction(){ 
 
     if(localStorage.getItem('username') != null){ 
 
      localStorage.removeItem('username'); 
 
      this.router.navigate(['/']); 
 
     } 
 
    } 
 
}

回答は、私が見つかりましたが、良い方法があるかどう共有してください。

ngOnInit() { 
 
     this.checkStorage(); 
 
    } 
 
    
 
    checkStorage() { 
 
     var checkStorage = localStorage.getItem('username'); 
 
     if(!checkStorage) { 
 
      this.router.navigate(['']); 
 
     } 
 
    }

+0

'ngInit'にAngular 2の方法を求めていますか? –

+0

ええ、Angular 1のようにinit(){}、次にinit()があります。機能を初期化するためにコントローラの下部にあります。だから、どうすれば関数を初期化することができますか? – nCore

+0

RIP ngInit。そして...「ロード」イベントはどうですか? –

答えて

0

あなたがログインするまでのアクセスをブロックしたい場合は、角度の方法が書かれています:

は、バックエンドが私たちのために働くしてみましょう。

私はPHPの開発者だったとき、CookieがないときにリダイレクトするCodeIgniter Frameworkの機能を持っていることを覚えています。

あなたは、この使用して角度2制限したい場合は、あなたのコードは良いようだが、私は間違いを発見した(まだない生産のためのを覚えている!):

var checkStorage = localStorage.getItem('username'); 
if(checkStorage == null) { 
    this.router.navigate(['/']); 
} 

は、比較するために、二重等を使用してください。

これをinitで実行したい場合は、これが役に立ちます。

Converting Angular 1 to Angular 2 ngInit function

幸運と幸せなコーディング!

+0

まだバックエンドを使用していない、まったくダミーです。私はクッキーを設定しますが、localStorage atmで遊んでいます。そのコードを関数にラップすると、localStorageをチェックできたので、うまく動作するngOnInit()を試しました。しかし、他の誰かが正しい方法を知っている場合は、共有してください。 – nCore

+0

正常に機能している場合は正しい方法です。 Angularには「正しい方法」を定義する多くのスタイルガイドがあり、お気に入りを選択するだけです。トッド・モットは良い出発点です。 –

+0

オリジナルの投稿をチェックして編集し、ngOnInitを使用して回答を追加しました。うん、それは動作するかどうか、それは動作しますが、それを行うのより良い/効率的な方法を見つけることを試みている。トッド・モットをチェックします。 – nCore

関連する問題