我需要检查互联网和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,上面的错误消失了。现在它没有进入this.network.onConnect()
答案 0 :(得分:1)
您必须将CAST
添加到Network
(*.module.ts
)中的providers数组中。
答案 1 :(得分:0)
您需要添加Network
作为提供商。
为此,您app.module.ts
添加Network
作为提供商:
import { Network } from '@ionic-native/network';
@NgModule({
declarations: [
...
],
imports: [
...
],
bootstrap: [IonicApp],
entryComponents: [
...
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler},
Network
]
})
但是,由于Network
模块是ionic-native
的一部分,因此它需要Cordova,因此无法在浏览器中运行,只能在模拟器中或本机运行。
我建议使用Network
提供程序平台准备好包装这些功能,这样它就不会使浏览器崩溃,但在有cordova的情况下仍能正常工作:
this.platform.ready().then(() => {
// calls to ionic-native modules e.g. `Network` methods
})