Таким образом, как обычно вы хотите сделать это в приложении с большим количеством страниц:
- создайте провайдера «базового» уровня - глобального единственного провайдера, который должна импортировать каждая страница.
- у такого провайдера у вас есть общедоступная переменная "appIsOnline".
- такая переменная обновляется программно на основе подписки, что у вас есть
- , на каждой странице реализована защита ionViewCanEnter, которая позволяет толькостраница для входа в стек, если var основного провайдера сообщает, что приложение находится в сети.
Ваш провайдер должен выглядеть примерно так:
import { Injectable, AlertController } from '@angular/core';
import { Network } from "@ionic-native/network";
@Injectable()
export class FoundationProvider {
public appIsOnline: boolean;
constructor(
private network: Network,
private alertCtrl: AlertController
) {
this.appIsOnline = true;
this.listenConnection();
}
listenConnection() {
// watch network for a disconnection if user is offline.......
let disconnectSubscription = this.network.onDisconnect().subscribe(() => {
this.appIsOnline = false;
//show alert....
const alert = this.alertCtrl.create({
title: 'Your Data is off',
message: 'Turn on data or wifi in setting',
buttons: [
{
text: 'Ok',
handler: (data: any) => {
console.log('data');
}
}
],
enableBackdropDismiss: false
});
alert.present();
});
// watch network for a connection
let connectSubscription = this.network.onConnect().subscribe(() => {
this.appIsOnline = true;
// We just got a connection but we need to wait briefly
// before we determine the connection type. Might need to wait.
//prior to doing any api requests as well.
if (this.network.type === 'wifi') {
console.log('data');
}
});
}
}
Тогда каждая страница должна импортировать этопровайдера, вставьте его в конструктор и добавьте хук на страницу:
ionViewCanEnter(): boolean {
if(this.foundationProvider.appisOnline) {
return true;
}
return false;
}
В качестве альтернативы, в зависимости от того, как именно структурировано ваше приложение, вы можете «охранять» .push, .setRoot и т. д. методы, которые вы используете, чтобы перейти кстр.Но вы должны поделиться большим количеством своего кода, чтобы дать лучшее предложение.