我们想要测量以下 Angular 事件,并且我们知道如何做到这一点:
但我们想记录额外的信息:
我们怎样才能得到这些额外的信息呢?
您可以利用调用堆栈来查找进行调用的服务或组件。看到这个问题
要获取给定组件的声明模块,您可以使用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)
}
Run Code Online (Sandbox Code Playgroud)
请参阅此 StackBlitz了解工作示例
我没有时间深入研究这个主题,如果我有时间的话明天我会尝试一下
我认为您可以通过路由器事件获取所需的所有信息。它们可以访问已解析的路由,其中包含所有配置,包括应插入路由器出口的组件。
| 归档时间: |
|
| 查看次数: |
3256 次 |
| 最近记录: |