【问题标题】:How to show or hide ion-icon when no internet connection in ion navbar?离子导航栏中没有互联网连接时如何显示或隐藏离子图标?
【发布时间】:2020-01-24 07:57:20
【问题描述】:

检查互联网连接时如何显示或隐藏离子图标?我对此有点困惑,所以如果你知道如何解决这个问题,请告诉我。谢谢 我已经在 HTML ngIf 函数中设置了这个:

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

这是我的网络提供商的 ts 以及在哪里检查它。非常感谢您的一点支持和帮助。 网络.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();
  }
}

【问题讨论】:

  • 你在使用网络插件吗??请分享代码
  • 是的,我正在使用网络插件和网络提供商,我想在我拥有的每个表单上显示或隐藏这个离子图标。我将在下面分享网络提供商ts。
  • @NajamUsSaqib 立即查看。谢谢

标签: angular ionic-framework


【解决方案1】:

这样做:

在您的 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);
    });

 }

在您的 page.ts 内

constructor(){
   this.events.subscribe('networkStatus', (data) => {
      console.log(data);
      if(data.status == false){
        this.wifi = false;
      }else{
        this.wifi = true;
      }
   });
}

【讨论】:

  • 一切都一样。离子图标不可见,仍然不起作用。
  • 试试这样:&lt;ion-icon name="ios-wifi" style="zoom:1.5;" *ngIf="wifi == true"&gt;&lt;/ion-icon&gt;.
  • 离子图标仍然存在,甚至是真假。
猜你喜欢
  • 2015-11-23
  • 2016-08-28
  • 2016-05-05
  • 1970-01-01
  • 2016-08-12
  • 2016-08-13
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
相关资源
最近更新 更多