我有两个Angular项目,分别使用以下版本:
- 9.0.0-next.6
- 8.1.0
在9版本中,我使用以下代码来提供和注入window
对象:
@NgModule({
providers: [
{
provide: Window,
useValue: window
},
]
})
export class TestComponent implements OnInit {
constructor(@Inject(Window) private window: Window)
}
这个方法运行良好。
采用这种方法到版本8时,编译时会引发警告和错误:
警告:无法解析TestComponent的所有参数…
我通过使用单引号来解决它,像这样:
@NgModule({
providers: [
{
provide: 'Window',
useValue: window
},
]
})
export class TestComponent implements OnInit {
constructor(@Inject('Window') private window: Window)
}
这两个版本有什么不同之处?Angular 8和9之间的区别是什么导致了这种情况?