如何在 Angular 2 中使用窗口对象? [复制]

Posted

技术标签:

【中文标题】如何在 Angular 2 中使用窗口对象? [复制]【英文标题】:How can I use a window object in Angular 2? [duplicate] 【发布时间】:2017-07-16 05:28:44 【问题描述】:

我尝试将以下代码放入角度 2 中的窗口对象:

      @Component(
          selector: 'app-slider',
          templateUrl: './slider.component.html',
          styleUrls: ['./slider.component.css'],
          providers: [
            SliderService, 
             provide: "windowObject", useValue: window
          ]
        )
        export class SliderComponent implements OnInit 
        
          sliderList: Slider[] = [];
        
          constructor( private _sliderservice:SliderService, @Inject("windowObject") private _window:window )  

不幸的是,它不起作用。

【问题讨论】:

我不确定这是否应该被视为重复。 1)另一个问题专门关于角度服务,而这更广泛(包括例如角度组件)。 2) 另一个问题是具体如何注射,而有时可能不需要注射。如果这两点中的任何一个为真,那么这不是重复的,对吧? 【参考方案1】:

您不需要提供者。 window 是一个全局对象,可以在你的类中直接访问

【讨论】:

使用全局 JS 对象中的 window 会使您的 Angular 应用程序变得脆弱,如果您想进行服务器端渲染,它将无法工作。 @LocalPCGuy 诚实的问题:如果您使用“可选链接”问号,它还会脆弱吗?例如,window?.navigator @Marcus 不,这将防止 window 为空。或者您可以将使用 window 的代码包装在 if (window) ... 保护中。 除非未定义,是的,它是一个全局对象

以上是关于如何在 Angular 2 中使用窗口对象? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在模态窗口 [ANGULAR 5] 内创建路由?

从 Angular 表达式访问窗口

如何使用 CSS 更改 Angular-UI Bootstrap Datepicker 弹出窗口的样式?

Angular 2 - 关闭窗口时执行代码

使用角度,打字稿,webpack时如何将jquery添加到窗口对象

如何在 Angular 4/2 选择中显示对象的某个字段?