Как показать или скрыть ion-иконку, когда в ion Navbar нет интернет-соединения? - PullRequest
0 голосов
/ 24 сентября 2019

Как показать или скрыть ion-icon при проверке интернет-соединения?Я немного озадачен этим, так что если вы знаете, как решить эту проблему, дайте мне посмотреть.Спасибо, я установил это в функции HTML ngIf:

<ion-buttons end>
      <div >
        <ion-icon name="ios-wifi" style="zoom:1.5;" *ngIf="!wifi"></ion-icon>
        </div>
    </ion-buttons>

Вот ts моего сетевого провайдера и где его проверить.Большое спасибо за небольшую поддержку и помощь.network.ts

import { Injectable } from '@angular/core';
import { Network } from '@ionic-native/network';
import { BehaviorSubject, Observable } from 'rxjs';
import { ToastController, Platform } from 'ionic-angular';

export enum ConnectionStatus {
  Online,
  Offline
}

@Injectable({
  providedIn: 'root'
})
export class NetworkService {

  private status: BehaviorSubject<ConnectionStatus> = new BehaviorSubject(ConnectionStatus.Offline);

  constructor(private network: Network, private toastController: ToastController, private plt: Platform) {
    this.plt.ready().then(() => {

      this.initializeNetworkEvents();
      let status = this.network.type !== 'none' ? ConnectionStatus.Online : ConnectionStatus.Offline;
      this.status.next(status);
    });
  }

  public initializeNetworkEvents() {

    this.network.onDisconnect().subscribe(() => {
      if (this.status.getValue() === ConnectionStatus.Online) {
        console.log('OFFLINE');
        this.updateNetworkStatus(ConnectionStatus.Offline);
      }
    });

    this.network.onConnect().subscribe(() => {
      if (this.status.getValue() === ConnectionStatus.Offline) {
        console.log('ONLINE');
        this.updateNetworkStatus(ConnectionStatus.Online);
      }
    });
  }

  private async updateNetworkStatus(status: ConnectionStatus) {
    this.status.next(status);

    let connection = status == ConnectionStatus.Offline ? 'Internet konekcija prekinuta.' : 'Konekcija uspostavljena';

    this.toastController.create({
      message: `${connection}`,
      duration: 3000,
      position: 'bottom'
    }).present();
  };

  public onNetworkChange(): Observable<ConnectionStatus> {
    return this.status.asObservable();
  }

  public getCurrentNetworkStatus(): ConnectionStatus {
    return this.status.getValue();
  }
}

1 Ответ

0 голосов
/ 24 сентября 2019

Сделайте так:

в вашем app.component.ts

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

        constructor(private network: Network, public events: Events,) {
          // watch network for a disconnection
          let disconnectSubscription = this.network.onDisconnect().subscribe(() => {

           console.log('network was disconnected :-(');
           this.events.publish('networkStatus', {status: false}); 
          });

    // watch network for a connection    
    let connectSubscription = this.network.onConnect().subscribe(() => {
      console.log('network connected!');
      this.events.publish('networkStatus', {status: true});
      setTimeout(() => {
        if (this.network.type === 'wifi') {
          console.log('we got a wifi connection, woohoo!');
        }
      }, 3000);
    });

 }

внутри вашей страницы .ts

constructor(){
   this.events.subscribe('networkStatus', (data) => {
      console.log(data);
      if(data.status == false){
        this.wifi = false;
      }else{
        this.wifi = true;
      }
   });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...