Angular 2 AOT - 类型中不存在属性“窗口”

时间:2016-11-17 14:34:53

标签: angular dependency-injection angular2-aot

在我的Angular 2应用程序中,我使用此处描述的内容提供了窗口对象:Angular2 - How to inject window into an angular2 service

但是,用于AOT的ngc编译器会返回多个错误。首先,我必须改变我提供依赖的方式(注意'Window'):

@NgModule({        
  providers: [
    { provide: 'Window',  useValue: window }
  ],
  ...
})
export class AppModule {}

在我的组件中(注意类型'any'):

@Component({ ... })
export default class MyComponent {
    constructor (
        @Inject('Window') private window: any
    ) {}
...

但是我的模块ngfactory中的ngc编译器仍然会出现以下错误:

  

属性'窗口'在类型

上不存在

同样,tsc编译器一切正常。

2 个答案:

答案 0 :(得分:1)

最后,我按照此处描述的内容修正了我的问题:http://juristr.com/blog/2016/09/ng2-get-window-ref/

答案 1 :(得分:1)

以下简单的解决方案为我做了诀窍:

在“ @NgModule ”下的“提供商”部分中:

{provide: 'window', useFactory: getWindow }

确保导出“getWindow”方法:

export function getWindow() { return window; }

来源 - https://github.com/angular/angular/issues/14050