如何在Angular 4中检查isBrowser

Sta*_*eff 4 javascript typescript angular

在过去,您可以使用isBrowserAngular Universal来检查您的页面是否在浏览器中呈现(因此您可以使用localStorage之类的东西),或者它是否正在进行服务器端预呈现.

但它似乎angular2-universal被解散了@angular/core,@angular/platform-server并且@angular/platform-browser.

我在Angular 4的API文档中寻找类似的功能,并试图在源代码的某个地方找到它,但没有运气.

我错过了什么或Angular 4检查渲染是否在浏览器中运行的方式是什么?或者我应该只检查是否window已定义?

小智 11

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
            }
    }
...
Run Code Online (Sandbox Code Playgroud)


小智 3

您可以isPlatformBrowser(<platform id>)这样导入:

import { isPlatformBrowser } from '@angular/common';
Run Code Online (Sandbox Code Playgroud)

这将允许您检查它是否在浏览器中呈现。

请注意,还有一个isPlatformServerin @angular/common