Reputation: 6069
In the earlier RC releases of Angular 2 I was able to inject the window object by adding
{provide: Window, useValue: window}
To the providers array.
Since upgrading to the latest stable release of angular 2 (2.1.0) this now throws a console error
compiler.umd.js:14268Uncaught Error: Can't resolve all parameters for LoginComponent: (AuthService, UserMessagesService, ?).
The ? in the parameter list is where I am trying to inject the Window object.
Upvotes: 13
Views: 15002
Reputation: 6424
Try with:
@NgModule({
declarations: [...],
imports: [...],
providers: [
{ provide: "windowObject", useValue: window}
]
})
export class HomeModule {}
in your component:
constructor(@Inject("windowObject") window: Window})
Upvotes: 21
Reputation: 17491
In order for it to work with AOT you need to do useFactory instead of useValue:
export function windowFactory() {
return window;
}
module:
providers: [
{ provide: 'window', useFactory: windowFactory }
]
component:
constructor(@Inject('window') window: Window})
Upvotes: 18