Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 2:当用户注销其中一个选项卡时,自动注销所有打开的选项卡_Angular - Fatal编程技术网

Angular 2:当用户注销其中一个选项卡时,自动注销所有打开的选项卡

Angular 2:当用户注销其中一个选项卡时,自动注销所有打开的选项卡,angular,Angular,我已经基于sessionstorage创建了登录页面。在加载页面时,我检查了sessionstorage的值。如果我在多个选项卡中打开网页,然后从其中任何一个选项卡注销,则所有剩余页面都应自动注销 请帮助我运行一个脚本,当用户查看页面或说任何其他方式来解决这个问题 单击注销按钮 logout() { const userLoggedOut = this.loginService.changeStatusLogout(this.isAuthenticated.getLoginStatus(),

我已经基于sessionstorage创建了登录页面。在加载页面时,我检查了sessionstorage的值。如果我在多个选项卡中打开网页,然后从其中任何一个选项卡注销,则所有剩余页面都应自动注销

请帮助我运行一个脚本,当用户查看页面或说任何其他方式来解决这个问题

单击注销按钮

logout() {

 const userLoggedOut = this.loginService.changeStatusLogout(this.isAuthenticated.getLoginStatus(),                                                            this.isAuthenticated.getLoggedInUserID());
if (userLoggedOut) {
  const link = ['login'];
  this.router.navigate(link);
 }
}

changeStatusLogout(status: boolean, userID){
  if (userID && status) {
    sessionStorage.removeItem('userID');
    sessionStorage.removeItem('userGroup');
    sessionStorage.removeItem('userLogedIn');
  return true;
  }
}

getLoginStatus() {
    const checkStaus = sessionStorage.getItem('userLogedIn');
    if (checkStaus === 'true') {
    return this.userLoggedIn = true;
    }
}

getLoggedInUserIDGroup() {
  const loggedInUserGroup = sessionStorage.getItem('userGroup');
  return loggedInUserGroup;
  }

您可以使用存储事件在更改本地存储值时收到通知

function storageChange (event) {
if(event.key === 'logged_in') {
    alert('Logged in: ' + event.newValue)
}}  window.addEventListener('storage', storageChange, false)
例如,如果其中一个选项卡注销:

window.sessionStorage.setItem('logged_in', false)
然后,所有其他选项卡将收到StorageEvent,并显示警报:

Logged in: false

我认为您可以在再次登录后加载组件,并在加载时将所有选项卡设置为不可见。