2017-11-27 7 views
2

私はAngular github repoにこの質問を掲載しましたが、私が求めているのはバグでも新機能でもないと言われました。彼らは私がこの質問をここに投稿することを勧めました。アプリのタブを変更するときにライフサイクルフックが実行されないのはなぜですか?

Angularアプリケーションは、canActivateガードを備えたルータを使用します。ユーザーがブラウザに新しいタブを追加し、アプリケーションがロードされたページに戻ると、ライフサイクルフックは実行されません。さらに、ルータガードはまったく実行されません。この問題を回避するために、次のJSを使用し、index.htmlで実行しています。これをtypescriptで実装し、Angular 4との互換性を高めるにはどうすればよいですか?フォーカスイベントを追加するには、アプリケーション・コンポーネントでは

==> JS

var hidden, visibilityChange; 
if (typeof document.hidden !== "undefined") { 
    hidden = "hidden"; 
    visibilityChange = "visibilitychange"; 
} 

function handleVisibilityChange() { 
    if (!document[hidden]) { 
     var initialPage = window.location.pathname; 
     window.location.replace(initialPage); 
    } 
} 

document.addEventListener(visibilityChange, handleVisibilityChange, false); 

答えて

0

上記の勧告のために外を見る:さらに、これは、ページをリロードするために私達を必要とし私はこれをさらに良く見つけました:

@HostListener("document:visibilitychange", ["$event"]) 
handleVisibilityChange(event: any): void { 

    // Route to home page to run the activate Guard 
    if (!document.hidden) {   

    } 
} 
0

と変更

@HostListener('window:focus', ['$event']) 
onFocus(event: any): void { 
} 
+0

- ありがとう!それはうまくいった。ただし、Chromeでdevツールが表示されている場合は機能しません。これはSafariでは起こりません。どんな解決策も提案できますか?上記のjavascriptコードではこの問題はないようです。 –

関連する問題