1

语境

我正在开始一个学生项目,它是 angular2 的度量工具。

我实际上正在研究概念证明,证明我只能使用静态注册方法在运行时获取组件的指标,该方法myLibClass.registerComponents([Component1, Component2,...])将具有像这样的实现(伪代码):

registerComponents(components:any[]):void{
    components.forEach(component => {
        //Register metric methods on zone foreTask and afterTask
    });
}

问题

我怎样才能获得的全球区域angular2?我想在 ng2 zone 上绑定我的方法,以便能够检查每个调用的执行时间,而NgZone不提供执行此类操作的工具。

另一个从外部类度量组件的想法也是受欢迎的

更新:

我做了一些研究,发现如何使用 ̀ Zone.current` 获取全局 angular2 区域。

问题仍然存在,因为它的第二部分(最难的部分)尚未实现:

我想在 ng2 zone 上绑定我的方法,以便能够检查每个调用的执行时间,而NgZone不提供执行此类操作的工具。

做到这一点的唯一方法是分叉 angular2 区域并用我的分叉区域替换 angular 使用的实际区域(这是我看到的唯一方法)。

甚至可能吗?分叉区域不是问题,但我无法在 angular2 上连接它。

由于我需要的信息多于null(如您在ngZone 的源代码中所见,触发的每个事件都是用null),我需要有一个自定义区域供 angular2 使用,但我不能扩展 NgZone,因为它没有使用 DI 进行实例化,因此 angular2 使用的区域仍然是 NgZone。

4

1 回答 1

1

如果您想使用覆盖的 ngZone 运行应用程序,您可以执行以下技巧。

const platform = platformBrowserDynamic();
const zone = new MyZone();
platform['_bootstrapModuleWithZone'](AppModule, [], zone);

它在 ng1 升级适配器中使用

但不幸的是,这是私有方法

也可以看看

于 2016-11-07T10:28:29.430 回答