Angular 离子本机网络插件

Angular 离子本机网络插件,angular,typescript,ionic-framework,Angular,Typescript,Ionic Framework,我需要检查internet和id连接是否存在我需要执行服务器请求。我使用了爱奥尼亚原生网络插件。但我是按照他们的官方文件做的 我的代码: import { Component } from '@angular/core'; import { IonicPage, NavController, NavParams, LoadingController } from 'ionic-angular'; import { Auth } from '../../providers/auth/auth';

我需要检查internet和id连接是否存在我需要执行服务器请求。我使用了爱奥尼亚原生网络插件。但我是按照他们的官方文件做的

我的代码:

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams, LoadingController } from 'ionic-angular';
import { Auth } from '../../providers/auth/auth';
import { Network } from '@ionic-native/network';
@Component({
  selector: 'page-login',
  templateUrl: 'login.html',
})
export class LoginPage {
  constructor(private network: Network,private alertCtrl: AlertController,public navCtrl: NavController, public navParams: NavParams,public authService: Auth, public loadingCtrl: LoadingController) {

}
  ionViewDidLoad() {
      // watch network for a disconnect
    let disconnectSubscription = this.network.onDisconnect().subscribe(() => {
        console.log('network was disconnected :-(');
    });
  disconnectSubscription.unsubscribe();
  // watch network for a connection
  let connectSubscription = this.network.onConnect().subscribe(() => {
    console.log('network connected!');
    //Check if already authenticated
    this.authService.checkAuthentication().then((res) => {
        console.log("Already authorized");
        this.loading.dismiss();
        this.navCtrl.setRoot(HomePage);
    }, (err) => {
        console.log("Not already authorized");
        this.loading.dismiss();
    });
  });

  // stop connect watch
  connectSubscription.unsubscribe();
    console.log('ionViewDidLoad LoginPage');
  }
}
我的控制台显示此错误:

为什么会发生这种情况?是否需要在提供程序数组中添加

更新

正如Daniel B提到的,我在providers数组中添加了网络,上面的错误消失了。现在它没有进入这个.network.onConnect

您必须将网络添加到*.module.ts app.module.ts中的providers数组中。

您需要将网络添加为提供程序

为此,您的app.module.ts将网络添加为提供商:

import { Network } from '@ionic-native/network';

@NgModule({
  declarations: [
    ...
  ],
  imports: [
    ...
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    ...
  ],
  providers: [
    StatusBar,
    SplashScreen,
    {provide: ErrorHandler, useClass: IonicErrorHandler},
    Network
  ]
})
但是,由于网络模块是ionic native的一部分,它需要Cordova,因此不会在浏览器中运行,只能在模拟器或本机中运行

我建议使用Network provider platform ready包装这些功能,这样它就不会使浏览器崩溃,但在有cordova的情况下仍然可以工作:

this.platform.ready().then(() => {
    // calls to ionic-native modules e.g. `Network` methods
})

我补充道。现在错误消失了。但是,尽管我已连接到internet,但它并没有执行服务器请求。我在web浏览器上对此进行了测试。然后这是另一个问题。更新了我的问题,该问题与堆栈溢出的工作原理无关。现在我的答案完全不正确,因为你已经更新了你的问题。您应该将我的答案标记为正确,然后创建一个新问题。更新我的答案以回答您的更新问题:添加此项仍然不走运