我想知道这两个例子之间的区别是什么:
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);
}
}
两者之间是否存在实际差异?
我预计在这里我对基础理论的认识可能会有一些差距 - 任何能帮助我教育自己的方向的指针都会受到赞赏 - 谢谢!
答案 0 :(得分:2)
this._entryService = new EntryService
的等价物是组件定义中的提供者:
@Component({ ..., providers: [EntryService] })
export class EditorComponent {
constructor(
public _entryService: EntryService
){}
}
这将为每个组件实例创建新的EntryService
实例。
如果没有提供者属于组件注入器,它将从父注入器(可能是根注入器)中检索,并将生成EntryService
提供者的单个实例:
@Component({ ..., providers: [] })
export class EditorComponent {
constructor(
public _entryService: EntryService
){}
}
唯一需要new EntryService
的情况是类构造函数接受非DI参数(如this example中所示)。