1

環境

angular2のメトリックツールである学生プロジェクトを開始しています。

私は実際に概念実証に取り組んでいます。myLibClass.registerComponents([Component1, Component2,...])これは、このような実装を持つ静的登録メソッドのみを使用して、実行時にコンポーネントのメトリックを取得できるという証明です (疑似コード):

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

問題

の大域ゾーンを取得するにはどうすればよいangular2ですか? 各呼び出しの実行時間を確認できるように、ng2 ゾーンにメソッドをバインドしたいのですが、NgZoneはそのようなことを行うためのツールを提供していません。

外部クラスからコンポーネントを測定する別のアイデアも大歓迎です

アップデート:

私はいくつかの調査を行い、̀ Zone.current` を使用してグローバルな angular2 ゾーンを取得する方法を見つけました。

問題の 2 番目の部分 (最も難しい部分) がまだ達成されていないため、問題はまだここにあります。

各呼び出しの実行時間を確認できるように、ng2 ゾーンにメソッドをバインドしたいのですが、NgZoneはそのようなことを行うためのツールを提供していません。

これを行う唯一の方法は、angular2 ゾーンをフォークし、angular で使用されている実際のゾーンをフォークされたものに置き換えることです (それが私が見る唯一の方法です)。

それは可能ですか?ゾーンのフォークは問題ありませんが、angular2 に接続できません。

null( ngZone のソース コードでわかるように、発生するすべてのイベントはで発生するよりも多くの情報が必要なのでnull、これでは、呼び出しの名前や呼び出し元など、最後のマイクロタスクについて必要な情報を取得できません。 )、angular2 で使用されるカスタム ゾーンが必要ですが、インスタンス化に DI を使用していないため NgZone を拡張できず、angular2 で使用されるゾーンは引き続き NgZone になります。

4

1 に答える 1