Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check for isBrowser in Angular 4

In the past you could use isBrowser from Angular Universal to check if your page was rendering in a browser (and therefore you can use things like localStorage) or if it was doing server side pre-rendering.

But it seems that angular2-universal was dissolved into @angular/core, @angular/platform-server and @angular/platform-browser.

I've looked for similar functionality in the API documentation for Angular 4 and also tried to find it somewhere in the source code, but without luck.

Am I missing something or what is the Angular 4 way of checking if the rendering is running in a browser? Or should I simply just check if window is defined?

like image 319
Staeff Avatar asked Sep 07 '17 15:09

Staeff


Video Answer


2 Answers

import { PLATFORM_ID, Inject } from '@angular/core';
import { isPlatformBrowser} from '@angular/common';
...
export class MyComponent {
...
    testBrowser: boolean;
    constructor(
        @Inject(PLATFORM_ID) platformId: string) {
            this.testBrowser = isPlatformBrowser(platformId);
            if (this.testBrowser) {
                //this is only executed on the browser
            }
    }
...
like image 187
anode7 Avatar answered Oct 12 '22 16:10

anode7


You can import isPlatformBrowser(<platform id>) as so:

import { isPlatformBrowser } from '@angular/common';

and that will allow you to check for whether it is rendering in browser or not.

As a note, there is also a isPlatformServer in @angular/common as well.

like image 33
jpwiddy Avatar answered Oct 12 '22 17:10

jpwiddy