Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Angular2(非爱奥尼亚)Cordova应用程序中检查互联网连接_Cordova_Angular_Typescript - Fatal编程技术网

在Angular2(非爱奥尼亚)Cordova应用程序中检查互联网连接

在Angular2(非爱奥尼亚)Cordova应用程序中检查互联网连接,cordova,angular,typescript,Cordova,Angular,Typescript,我们已经创建了一个Angular2 Cordova(非爱奥尼亚)应用程序,可以多次调用后端服务 如果用户没有连接,我们希望应用程序显示特定页面(组件)。我们已经构建了所有这些,但是我们如何感知连接,然后显示页面 这个应用程序是用TypeScript编写的,我想我可以在index.ts文件中添加一些代码来完成这项工作,但是index.ts文件不理解应用程序的导航,不允许我更改页面 我知道我需要Cordova网络信息插件,我知道如何使用该插件检查连接,但缺少的部分是连接该插件,以便它可以更改页面(路

我们已经创建了一个Angular2 Cordova(非爱奥尼亚)应用程序,可以多次调用后端服务

如果用户没有连接,我们希望应用程序显示特定页面(组件)。我们已经构建了所有这些,但是我们如何感知连接,然后显示页面

这个应用程序是用TypeScript编写的,我想我可以在index.ts文件中添加一些代码来完成这项工作,但是index.ts文件不理解应用程序的导航,不允许我更改页面


我知道我需要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
请求中重复。我为我们的应用程序实现了最后一个。