我想知道有什么区别这两个示例: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