无法在 angular2 应用程序中接收存储事件

Rhu*_*esh 3 browser tabs cross-browser local-storage angular

我正在努力在我关注的应用程序的所有打开的选项卡之间进行通信

选项卡或窗口之间的通信

但我没有收到事件

这是我的简单组件代码

import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';

@Component({
    selector: 'selector',
    template: require('./app.component.html'),
    styles: [require('./app.component.css')]
})

export class AppComponent {
 constructor(){
       // listen event
       window.addEventListener('storage', this.message_receive);
       // to trigger dummy events
        setInterval(() => {
            this.message_broadcast({a: 'rhushi'});
        }, 1000);
}
    public message_broadcast(message) {
        localStorage.setItem('message', JSON.stringify(message));
    }
    public message_receive(ev) {
        if (ev.key === 'message') {
            let message = JSON.parse(ev.newValue);
        }
    } 
}
Run Code Online (Sandbox Code Playgroud)

如果我在这里犯了任何错误,请纠正我

Shu*_*ham 5

仅当其他选项卡中的值发生更改storage时才会触发该事件。localStorage

在上面的代码中,您每次广播相同的 json 意味着中的值localStorage不会改变。仅当存储中发生值更改时才会触发存储事件。尝试发送不同的值。