ฉันมีโครงการสองแองกูลาร์ที่ใช้เวอร์ชันเหล่านี้:
- 9.0.0-next.6
- 8.1.0
ในรุ่น 9 ฉันใช้สิ่งนี้เพื่อจัดเตรียมและฉีดwindow
obhject:
@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 ที่ทำให้เกิดสิ่งนี้