我正在使用 Angular5,但无法从窗口存储事件触发控制器方法。
在 init 控制器 init 中,我声明了一个窗口存储事件,如下所示:
window.addEventListener('storage', this.messageReceive);
现在,当这个事件被触发时,我们无法访问该控制器的任何方法,因为我们在其他一些控制器上。
你能建议我们需要做什么吗?
我正在使用 Angular5,但无法从窗口存储事件触发控制器方法。
在 init 控制器 init 中,我声明了一个窗口存储事件,如下所示:
window.addEventListener('storage', this.messageReceive);
现在,当这个事件被触发时,我们无法访问该控制器的任何方法,因为我们在其他一些控制器上。
你能建议我们需要做什么吗?
这就是为什么 Angular 不鼓励您使用窗口属性或直接操作 DOM。您的尝试就像将常规click
-listener 绑定到 DOM 对象并尝试执行某些组件功能。
直接的解决方案是在浏览器功能和角度之间使用适当的层,例如angular-localstorage-observables或ngx-webstorage。如果您想或必须自己实现该层,我建议您查看他们的 github 存储库以检查源代码。