Angular 获取模块类名称和组件类名称
我们想测量以下角度事件,我们知道如何测量:Angular 获取模块类名称和组件类名称,angular,angular5,Angular,Angular5,我们想测量以下角度事件,我们知道如何测量: ngAfterViewInit组件和指令(通过生命周期挂钩) 路由导航计时(通过路由器事件) 通过公共/http的http客户端进行http调用(通过拦截器) 但我们希望记录额外信息: 与路由关联的模块类名和路由组件类名 在其中注册给定组件的模块类名 执行http调用和关联模块的服务或组件 我们如何获得这些额外信息?找到函数的调用者 您可以利用调用堆栈查找进行调用的服务或组件。看到这个问题了吗 查找组件的模块 要获取给定组件的声明模块,可以使
- ngAfterViewInit组件和指令(通过生命周期挂钩)
- 路由导航计时(通过路由器事件)
- 通过公共/http的http客户端进行http调用(通过拦截器)
- 与路由关联的模块类名和路由组件类名
- 在其中注册给定组件的模块类名
- 执行http调用和关联模块的服务或组件
ComponentFactoryResolver
解析组件时,它返回一个ComponentFactory
。但是当查看源代码时,我们可以看到ComponentFactory
是一个抽象类。事实上,真正的类是ComponentFactoryBoundToModule
,它知道自己的模块
它知道,但它是私人的。如果只是为了调试或记录,我认为您可以忽略TypeScript并获取这个私有属性。在运行时,隐私会丢失,因此您可以执行以下操作
constructor(private resolver: ComponentFactoryResolver) {
const factory = resolver.resolveComponentFactory(HelloComponent);
console.log('the factory:', factory);
// Access the private ngModule property.
const ngModuleRef: NgModuleRef<any> = (factory as any).ngModule;
console.log('the module name:', ngModuleRef.instance.constructor.name)
}
构造函数(专用解析器:ComponentFactoryResolver){
const factory=resolver.resolveComponentFactory(HelloComponent);
console.log('工厂:',工厂);
//访问私有模块属性。
const ngModuleRef:ngModuleRef作为工作示例
查找路由的组件
我没有时间深入研究这个问题,如果有时间的话,我明天就试试
我认为您可以通过路由器事件获得所需的所有信息。它们允许访问已解析的路由,其中包含所有配置,包括应插入路由器出口的组件。查找函数的调用方
您可以利用调用堆栈查找进行调用的服务或组件。请参阅此问题
查找组件的模块
要获取给定组件的声明模块,可以使用ComponentFactoryResolver
解析组件时,它返回一个ComponentFactory
。但是当查看源代码时,我们可以看到ComponentFactory
是一个抽象类。实际上,真正的类是ComponentFactoryBoundToModule
,它知道它的模块
它是知道的,但它是私有的。如果它只是为了调试或记录,我想你可以忽略TypeScript并获取这个私有属性。在运行时,隐私会丢失,所以你可以执行以下操作
constructor(private resolver: ComponentFactoryResolver) {
const factory = resolver.resolveComponentFactory(HelloComponent);
console.log('the factory:', factory);
// Access the private ngModule property.
const ngModuleRef: NgModuleRef<any> = (factory as any).ngModule;
console.log('the module name:', ngModuleRef.instance.constructor.name)
}
构造函数(专用解析器:ComponentFactoryResolver){
const factory=resolver.resolveComponentFactory(HelloComponent);
console.log('工厂:',工厂);
//访问私有模块属性。
const ngModuleRef:ngModuleRef作为工作示例
查找路由的组件
我没有时间深入研究这个问题,如果有时间的话,我明天就试试
我认为您可以通过路由器事件获得所需的所有信息。它们允许访问已解析的路由,该路由包含所有配置,包括应插入路由器出口的组件