我们实现了一个网络检查,作为窗口事件在线和离线的副作用。
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没有关系。