如何在Angular2中检查用户是否有网络连接?
如何在API打击时检查Angular2中的互联网连接,每当我的应用程序API被打到服务器时,有时用户是 离线(我的意思是没有互联网连接),那么我将如何检查互联网连接?是否有一些特殊的互联网连接状态代码? 还是别的?如何在Angular2中检查用户是否有网络连接?
PS: - 我在angularJs中发现了navigator.onLine
,但在angular2中似乎不起作用。
更新
如sudheer建议如下navigator.onLine
答案与angular2工作,但仍然无法正常工作,为什么? working example here
正如我检查导航器是像窗口的全局对象。你可以在angular2中使用它,它对我来说工作得很好。
import {Component} from 'angular2/core';
@Component({
selector: 'my-app',
template:`
navigator.onLine
{{onlineFlag}}
`
})
export class AppComponent {
public onlineFlag =navigator.onLine;
}
总是显示'true'为什么会这样? –
在这个例子中工作正常,请检查[here](http://plnkr.co/edit/7sCPqjoeUdFpBNmcXoKO?p=preview)。 –
我该如何在这里检查plunker离线模式?(离线模式,如果我做了一些改变,然后页面不能刷新,所以我不能检查) –
它完全适用于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)
)
}
起初,j2L4e的回答并没有为我(在Chrome测试)工作。我在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() {
}
}
为什么导入'rxjs/Rx'库。这是巨大而不好的做法。此外,Observable和Subscription已经被导入。 –
它总是连接!连接标志永远是真的(在最新的Chrome版本上),不知道为什么状态没有改变! –
我与Windows 10和Chrome检查这一点。如果至少连接了一个网络适配器,它总是返回“真”。所以如果你已经安装了一个虚拟适配器,比如VirtualBox的“HostOnly-Network”,你总是会得到'true',直到你禁用它。 :( – Stefan