NgRx store runtime check NgZone在android上失败



我们实现了一个网络检查,作为窗口事件在线和离线的副作用。

online$ = createEffect(() => {
return fromEvent(window, 'online').pipe(mapTo(NetworkActions.deviceOnline()));
});

这在桌面Chrome和iOS Safari上工作良好,但不知何故导致Android上的strictActionWithinNgZone运行时检查:

{
"state": {
"keyboard": {
"isKeyboardOpen": false
},
"network": {
"isDeviceOnline": true
}
},
"error": "Error: Action '[Network] Device Online' running outside NgZone. https://ngrx.io/guide/store/configuration/runtime-checks#strictactionwithinngzone"
},

有谁知道为什么这只发生在Android上,为什么它甚至是一个问题开始吗?

编辑:据我所知,fromEvent(window, '…')应该始终在区域内,因为zone.js会修补所有浏览器的EventTarget。

这也是Ionic + Cordova应用程序,但只有在Android上构建时。我能看到差异的唯一原因可能是它所运行的Webview,但除此之外,它只是基本的RxJS和Angular

谢谢帕斯卡

看起来这是Ionic + Cordova应用程序和Cordova网络插件https://ionicframework.com/docs/native/network的一个超级特定的问题

这似乎干扰了Android平台。没有插件,错误不会发生,但在线和离线窗口事件也不会在Android上触发。所以我猜这和NgRx没有关系。

最新更新