如何在 Angular 4 中检查 isBrowser

IT技术 javascript angular typescript
2021-03-07 14:10:16

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

不过好像angular2-universal被溶解成了@angular/core@angular/platform-server@angular/platform-browser

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

我是否遗漏了什么或检查渲染是否在浏览器中运行的 Angular 4 方法是什么?或者我应该简单地检查是否window已定义?

2个回答
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
            }
    }
...

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

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

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

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