我想知道有什麼區別這兩個示例:Typescript/Angular 4:注入服務和初始化爲新類有什麼區別?
export class EditorComponent {
constructor(
public _entryService: EntryService
){
console.log(this._entryService.entryData.properties);
}
}
export class EditorComponent {
_entryService;
constructor(){
this._entryService = new EntryService;
console.log(this._entryService.entryData.properties);
}
}
是兩者之間有任何實際的區別嗎?
我預計在我對基本理論知識方面可能存在一些差距 - 任何能夠幫助我進行自我教育的方向的指針將不勝感謝,謝謝!
'injecting'表示**單個實例**。 'instanctiating'意味着**創建多個實例**。對於'injectable()'服務來說,實例化是一種不好的做法。您可能最終面臨[**無法解析所有參數**](https://stackoverflow.com/questions/44996095/angular2-ionic2-cant-resolve-all-parameters-for-gameserviceprovider/44996310#44996310)錯誤 – Aravind
注入服務並不總是導致一個實例。例如,如果在共享模塊的提供者部分內提供服務,則每次將模塊導入到另一個模塊時都會導致該服務的新實例,除非它是通過'NgModuleWithProviders'定義的,並且通過靜態方法([ DOCS](https://angular.io/guide/ngmodule#why-userservice-isnt-shared))。 – cyrix
@cyrix您錯誤地解釋了文檔。你描述的行爲是指當另一個模塊有自己的注入器時,即延遲加載模塊的情況。這不會發生,如果一個模塊沒有延遲加載。 – estus