Angular:如何通过控制台获得组件依赖性?
发布时间:2020-12-17 10:24:32 所属栏目:安全 来源:网络整理
导读:我将重点放在开发工具中的组件元素上,可以执行以下操作: ng.probe($0) 获取特殊对象“DebugElement”.现在我们可以得到它的注射器: ng.probe($0).injector 现在我想得到一个在这个组件上定义的依赖.依赖性被定义为类,所以我应该这样做: ng.probe($0).inje
我将重点放在开发工具中的组件元素上,可以执行以下操作:
ng.probe($0) 获取特殊对象“DebugElement”.现在我们可以得到它的注射器: ng.probe($0).injector 现在我想得到一个在这个组件上定义的依赖.依赖性被定义为类,所以我应该这样做: ng.probe($0).injector.get(MyService) 但!服务器未在控制台范围中定义. ng.probe($0).injector.get('MyService') 显然它也行不通. 我想在ReflectiveInjector.get上进行逆向工程,但现在没有运气.有任何想法吗?
我们必须在声明时将token传递给injector.get方法.如果我们将类声明为标记,我们就不能使用字符串.
Angular将提供者在组件中声明为ngfactory Plunker function View_App_Host_0(_l) { return jit_viewDef0(0,[(_l()(),jit_elementDef1(0,null,2,'my-app',[],jit_View_App_02,jit__object_Object_3)),jit_providerDef4(4608,jit_MyService5,[]),jit_directiveDef6(49152,jit_App7,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; } 在我们在提供者组件元数据数组中声明提供者之后,该令牌在providerTokens数组中可用. 所以我们可以通过写作获得依赖 ng.probe($0).injector.get(ng.probe($0).providerTokens .find(x => x.name === 'MyService')) 也可以看看 > Trigger Angular change detection from console (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |