是否可以使用rxjs angular 5在其他选项卡浏览器中订阅observable

时间:2018-05-02 07:39:45

标签: javascript angular typescript rxjs

我有一个角度应用程序,有两个页面,我在浏览器的每个选项卡中打开它们,如果我在第1页中执行某些方法,我希望第2页订阅数据更改为rxjs并更新第2页中的数据,如实时app,有没有办法在没有websocket的情况下做到这一点?我用subscribe方法尝试了它,但只有第1页听取订阅。 这是第1页,称为更新布尔值的刷新方法

this.service.$refresh.subscribe(x=>{//boolean value changed by page 1(tab1)
    if(x) {
        console.log(x);
        this.service.stopRefresh();
    }
});

第2页听

set Single_URLs to "" 
repeat with this_line in nonExcludedURLs -- the URL's as block of text
    set Single_URLs to Single_URLs & this_line & return --split into lines
end repeat

1 个答案:

答案 0 :(得分:6)

您实际上可以将事件侦听器添加到localStorage,以便您可以使用localStorage在选项卡之间“传递消息”

localStorage.setItem('yourKeyName', true)

window.addEventListener('storage', (event) => {
   if (event.key == 'yourKeyName'){
      //update data
   }
});

因此,当您在一个页面上更改localStorage中某些内容的值时,另一个页面可以订阅它更改的事件

浏览器支持和更多信息:https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage#Browser_compatibility