@Component({
selector: 'connection',
template: `
<ng-template [ngTemplateOutlet]="fast.tpl" *ngIf="isFast"></ng-template>
<ng-template [ngTemplateOutlet]="slow.tpl" *ngIf="!isFast"></ng-template>
`,
})
export class ConnectionComponent {
isFast = true;
@ContentChild(FastDirective) fast: FastDirective;
@ContentChild(SlowDirective) slow: SlowDirective;
private subscription: Subscription;
ngOnInit() {
const connection = navigator.connection;
if (!connection) {
// if the browser doesn't support it, we render the fast template
return;
}
this.subscription = connection$
.subscribe((effectiveType: string) => {
if (/\slow-2g|2g|3g/.test(effectiveType)) {
this.isFast = false;
} else {
this.isFast = true;
}
})
}
ngOnDestroy() {
this.subscription && this.subscription.unsubscribe();
}
}