在Angular2(非爱奥尼亚)Cordova应用程序中检查互联网连接
我们已经创建了一个Angular2 Cordova(非爱奥尼亚)应用程序,可以多次调用后端服务 如果用户没有连接,我们希望应用程序显示特定页面(组件)。我们已经构建了所有这些,但是我们如何感知连接,然后显示页面 这个应用程序是用TypeScript编写的,我想我可以在index.ts文件中添加一些代码来完成这项工作,但是index.ts文件不理解应用程序的导航,不允许我更改页面在Angular2(非爱奥尼亚)Cordova应用程序中检查互联网连接,cordova,angular,typescript,Cordova,Angular,Typescript,我们已经创建了一个Angular2 Cordova(非爱奥尼亚)应用程序,可以多次调用后端服务 如果用户没有连接,我们希望应用程序显示特定页面(组件)。我们已经构建了所有这些,但是我们如何感知连接,然后显示页面 这个应用程序是用TypeScript编写的,我想我可以在index.ts文件中添加一些代码来完成这项工作,但是index.ts文件不理解应用程序的导航,不允许我更改页面 我知道我需要Cordova网络信息插件,我知道如何使用该插件检查连接,但缺少的部分是连接该插件,以便它可以更改页面(路
我知道我需要Cordova网络信息插件,我知道如何使用该插件检查连接,但缺少的部分是连接该插件,以便它可以更改页面(路由到相应的组件)。安装Cordova网络插件后,请每隔一秒钟检查一次:
setInterval(
function(){
if(!navigator || !navigator.network) return; //if is undefined
if(navigator.network.connection.type == Connection.NONE){
alert("nocon");
}else{
alert("yescon");
}
}, 1000
);
此插件提供了旧版本的的实现。它提供有关设备的蜂窝和wifi连接以及设备是否具有internet连接的信息
cordova plugin add cordova-plugin-network-information
下面是您的示例
module.controller('MyCtrl', function($rootScope, $cordovaNetwork) {
document.addEventListener("deviceready", function () {
var type = $cordovaNetwork.getNetwork()
var isOnline = $cordovaNetwork.isOnline()
var isOffline = $cordovaNetwork.isOffline()
// listen for Online event
$rootScope.$on('$cordovaNetwork:online', function(event, networkState){
var onlineState = networkState;
})
// listen for Offline event
$rootScope.$on('$cordovaNetwork:offline', function(event, networkState){
var offlineState = networkState;
})
}, false);
});
有关更多信息,请访问问题最后一段的参考链接“我知道我需要Cordova网络信息插件,我知道如何使用该插件检查连接,但缺少的部分是连接该插件,以便它可以更改页面(路由到适当的组件)。”在模块中的
run
方法中使用$setInterval
而不是setInterval
。在run方法中注入$state
,并使用$state.go
代替警报(“nocon”)代码>或警报(“yescon”)代码>@gianlucatursi这不是一个有角度的1.x项目。一些东西…1。正如我所说,我使用的是打字脚本。2.我使用的是Angular2。订阅插件online
事件并在事件处理程序中手动路由如何,如中所述?在服务中避免这样做的原因是什么?index.ts
应该是什么样子?你试过什么?您是否使用@angular/router
进行路由?错误是什么?您要求的是建议而不是解决方案,这就是为什么答案不够令人满意的原因,请添加一些代码相关信息
,以便我们能够提供更好的解决方案。我不确定如何在服务中实现这一点。我想,我可以这样做,但我不需要在所有组件中注入该服务吗?我想我是Angular2的新手,不知道它是如何工作的。如果你想在应用程序启动时检查互联网连接,请在根组件中进行检查。如果您想查看路由更改,则可以订阅路由器
进行更改,而无需在其他任何地方重复代码。如果您想在http
请求上检查它,那么您将需要一个公共服务,通过该服务,所有请求都会发生,并且您不必在每个http
请求中重复。我为我们的应用程序实现了最后一个。