【问题标题】:How can I use a window object in Angular 2? [duplicate]如何在 Angular 2 中使用窗口对象? [复制]
【发布时间】: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) 另一个问题是具体如何注射,而有时可能不需要注射。如果这两点中的任何一个为真,那么这不是重复的,对吧?

标签: angular angular2-cli window-object


【解决方案1】:

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

【讨论】:

  • 使用全局 JS 对象中的 window 会使您的 Angular 应用程序变得脆弱,如果您想进行服务器端渲染,它将无法工作。
  • @LocalPCGuy 诚实的问题:如果您使用“可选链接”问号,它还会脆弱吗?例如,window?.navigator
  • @Marcus 不,这将防止 window 为空。或者您可以将使用 window 的代码包装在 if (window) {...} 保护中。
  • 除非未定义,是的,它是一个全局对象
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 2016-09-02
  • 2013-05-15
  • 1970-01-01
  • 2020-02-07
  • 1970-01-01
  • 2020-05-24
相关资源
最近更新 更多