問題の説明
<router-outlet>
介してロードされたいくつかのコンポーネントを備えたアプリケーションがあります。 これらの各コンポーネントにはマップが含まれています。つまり、リンクがクリックされるたびに、新しいgoogleマップが<router-outlet>
に作成されます(ただし、アプリケーションには一度に1つのマップしかありません)。
マップが作成されるたびに、DOM要素に多くのイベントリスナーが追加されるようですが、マップが破棄されても削除されません。 次に、いくつかのリンクをたどった後、特にフォーム入力を入力するときに、アプリケーションが非常に遅くなります。
それがバグなのか、それともアプリケーションで1つのマップのみを使用し、開いたり閉じたりするコンポーネントに応じてその値を更新する必要があるのかどうかはわかりません。
現在の動作
アプリケーション/フォーム入力の入力は非常に遅く、マップによって作成されたイベントリスナーは削除されません。
期待される/望ましい動作
イベントリスナーを削除する必要があり、アプリケーションの速度を低下させないでください。
angle2&angular2-google-mapsバージョン
Angular 2 rc5&angular2-google-maps 0.12.2
イベントリスナーを削除する必要があり、アプリケーションの速度を低下させないでください。
ええ、イベントリスナーの一部を削除したと思いますが、すべてのリスナーを削除したかどうかはわかりません。
2)グーグルマップイベントをサブスクライブし、すでにゾーンで実行しているため、アンギュラーゾーンの外でグーグルマップ呼び出しを実行する必要があります。 これにより、パフォーマンスも向上するはずです。
@gnujeremieのような同様の問題があります。 マップを作成してからいくつかのポリラインを表示すると、マップコンポーネントがないページに移動するまで、すべてがうまくいきます(異なるポリラインの表示を問題なく切り替えることができます)。 地図のあるページに戻ると、ページと地図の動作が非常に遅くなっています。
ポリラインを表示しないと、問題が消えます。
私にとっての一時的な解決策は、この要素を可視性でグローバルに非表示にすることです-したがって、一度だけ作成されます-しかし、それは理想的ではありません...
この問題は、最近のアクティビティがないため、自動的に古いものとしてマークされています。 それ以上のアクティビティが発生しない場合は閉じられます。 貢献していただきありがとうございます。
最も参考になるコメント
ええ、イベントリスナーの一部を削除したと思いますが、すべてのリスナーを削除したかどうかはわかりません。
2)グーグルマップイベントをサブスクライブし、すでにゾーンで実行しているため、アンギュラーゾーンの外でグーグルマップ呼び出しを実行する必要があります。 これにより、パフォーマンスも向上するはずです。