Angular: 如何通过控制台获取组件依赖项?

12 浏览
0 Comments

Angular: 如何通过控制台获取组件依赖项?

我在开发工具中关注组件元素,并可以执行以下操作:

ng.probe($0)获得特殊对象"DebugElement"。现在我们可以获得它的注入器:

ng.probe($0).injector现在我想获取在此组件上定义的一个依赖项。依赖项被定义为一个类,所以我应该这样做:

ng.probe($0).injector.get(MyService)但是!服务在控制台范围内未定义。

如果我将其作为字符串:ng.probe($0).injector.get('MyService')显然也不起作用。

我正在尝试对ReflectiveInjector.get进行逆向工程,但目前还没有成功。有什么想法吗?

0
0 Comments

问题的原因是无法使用字符串作为token,因为声明了类作为token。解决方法是在组件元数据的providers数组中声明提供者,这样token就会在providerTokens数组中变得可用。通过ng.probe($0).injector.get(ng.probe($0).providerTokens.find(x => x.name === 'MyService'))来获取依赖。

参考链接:https://stackoverflow.com/questions/44838568

0