mirror of https://github.com/abpframework/abp.git
csharpabpc-sharpframeworkblazoraspnet-coredotnet-coreaspnetcorearchitecturesaasdomain-driven-designangularmulti-tenancy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.1 KiB
2.1 KiB
Internet Connection Service
InternetConnectionService is a service which is exposed by @abp/ng.core package. If you want to detect whether you are connected to the internet or not, you can use this service.
internet-connection-service.ts
import { DOCUMENT } from '@angular/common';
import { Injectable, computed, inject, signal } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable({
providedIn: 'root',
})
export class InternetConnectionService{
protected readonly window = inject(DOCUMENT).defaultView;
protected readonly navigator = this.window.navigator;
/* BehaviorSubject */
private status$ = new BehaviorSubject<boolean>(navigator.onLine)
/* creates writableSignal */
private status = signal(navigator.onLine);
/* READONLY ANGULAR SIGNAL */
networkStatus = computed(() => this.status())
constructor(){
this.window.addEventListener('offline', () => this.setStatus());
this.window.addEventListener('online', () => this.setStatus());
}
private setStatus(){
this.status.set(navigator.onLine)
this.status$.next(navigator.onLine)
}
/* returns OBSERVABLE */
get networkStatus$(){
return this.status$.asObservable()
}
}
Getting Started
When you inject InternetConnectionService you can get the current internet status also if status changes you can catch them immediately.
As you can see from the code above, InternetConnectionService is providing 2 alternatives for catching network status;
- Signal (readonly)
- Observable
How To Use
İt's easy just inject the service and get network status
You can get via signal
class someComponent{
internetConnectionService = inject(InternetConnectionService);
isOnline = this.internetConnectionService.networkStatus
}
or you can get as observable
class someComponent{
internetConnectionService = inject(InternetConnectionService);
isOnline = this.internetConnectionService.networkStatus$
}
That's all, feel free to try on your template