Как проверить, имеет ли пользователь подключение к Интернету или нет в Angular2?

Как я могу проверить подключение к Интернету в Angular2 во время атаки API, всякий раз, когда в моем приложении API попадает на сервер, иногда пользователь offline (я имею в виду без подключения к интернету), так как я могу проверить подключение к Интернету? есть ли специальный код статуса для подключения к Интернету? или что-то другое?

PS: - я нашел navigator.onLine в angularJs, но, похоже, не работает в angular2.

Обновление

как sudheer предложил в ответе ниже navigator.onLine при работе с Angular2, но все же не работает должным образом, почему? рабочий пример здесь

Ответы

Ответ 1

Он полностью работает с angular2. Очевидно, это отличается от angularJS, потому что ни $scope, ни $apply больше не существуют. RxJS делает это легко! Протестировано на Chrome 53:

шаблон:

<p>{{online$ | async}}</p>

контроллер:

online$: Observable<boolean>;

constructor() {
  this.online$ = Observable.merge(
    Observable.of(navigator.onLine),
    Observable.fromEvent(window, 'online').mapTo(true),
    Observable.fromEvent(window, 'offline').mapTo(false)
  )
}

Ответ 2

Сначала ответ j2L4e не работал у меня (тестирование в Chrome). Я слегка подделал, окружив свой bool в скобках в ngIf, и это закончилось тем, что работало.

<md-icon class="connected" mdTooltip="No Connection" *ngIf="!(isConnected | async)">signal_wifi_off</md-icon>

import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Subscription } from 'rxjs/Subscription';
import 'rxjs/Rx';

@Component({
  selector: 'toolbar',
  templateUrl: './toolbar.component.html',
  styleUrls: ['./toolbar.component.css']
})
export class ToolbarComponent implements OnInit {
  isConnected: Observable<boolean>;

  constructor() {
    this.isConnected = Observable.merge(
      Observable.of(navigator.onLine),
      Observable.fromEvent(window, 'online').map(() => true),
      Observable.fromEvent(window, 'offline').map(() => false));
  }

  ngOnInit() {

  }
}

Ответ 3

Как я заметил, навигатор - это глобальный объект, такой как окно. Вы можете использовать его в angular2, и он отлично работает для меня.

import {Component} from 'angular2/core';
@Component({
    selector: 'my-app',
    template:`
navigator.onLine
{{onlineFlag}}

`
})
export class AppComponent {
  public onlineFlag =navigator.onLine;
}