Angular: 封装 window 令牌

发布时间:2024年01月22日

封装 window 令牌

import { isPlatformBrowser } from '@angular/common';
import { InjectionToken, NgModule, PLATFORM_ID } from '@angular/core';
export const WINDOW = new InjectionToken('WindowToken');

@NgModule({
  declarations: [],
  imports: [],
  providers: [
    {
      provide: WINDOW,
      // 封装这个 window 只希望在浏览器环境下给一个 window 对象,在其他环境比如服务端环境就给一个空对象
      useFactory(platformId: Object): Window | Object {
        return isPlatformBrowser(platformId) ? window : {}
      },
      // useFactory 令牌依赖 PLATFORM_ID
      // PLATFORM_ID 是一个常量,代表平台的一个ID,区分浏览器平台还是服务器平台或者其他平台
      deps: [PLATFORM_ID]
    }
  ]
})
export class ServicesModule { }

在组件中使用

  constructor(
    // readonly el: ElementRef
    @Inject(WINDOW) private win: Window
  ) { }
文章来源:https://blog.csdn.net/Lm_choose_live/article/details/135741891
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。