我們必須將令牌傳遞給injector.get
方法。如果我們將類聲明爲標記,則不能使用字符串。
角保持組件內聲明的供應商在ngfactory Plunker
function View_App_Host_0(_l) {
return jit_viewDef0(0,[(_l()(),jit_elementDef1(0,null,null,2,'my-app',[],null,null,
null,jit_View_App_02,jit__object_Object_3)),jit_providerDef4(4608,null,jit_MyService5,
jit_MyService5,[]),jit_directiveDef6(49152,null,0,jit_App7,[],null,null)],null,
null);
}
而且它使用elementInjector得到的依賴。
DebugElement
獲取關於提供給當前節點
get providerTokens(): any[] {
const tokens: any[] = [];
if (this.elDef) {
for (let i = this.elDef.index + 1; i <= this.elDef.index + this.elDef.childCount; i++) {
const childDef = this.elView.def.nodes[i];
if (childDef.flags & NodeFlags.CatProvider) {
tokens.push(childDef.provider !.token);
}
i += childDef.childCount;
}
}
return tokens;
}
令牌信息我們聲明提供程序後內providers
陣列部件的元數據中的令牌在providerTokens
陣列變得可用。
因此,我們可以通過編寫
ng.probe($0).injector.get(ng.probe($0).providerTokens
.find(x => x.name === 'MyService'))
參見
@yurzui,你會使其與一些解釋回答得依賴? :) –