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