2017-08-09 10 views
0

グローバルダーティチェッカーをAngularで実装しようとしています。私たちには、各コンポーネントの設定が必要な解決策がありますが、もっと一般化したいと考えていました。Angularで現在アクティブなコンポーネントインスタンスを照会します。

各アクティブなコンポーネントをチェックして、ユーザーにプロンプ​​トを表示するかどうかを通知するグローバルコードを作成しました。少なくとも、私はそれがそうしていると思った。私の最初の計画は、NavigationEndイベントのrouter.eventsにリストアップされ、componentプロパティを公開しているため、現在のActivatedRouteを検査していました。ただし、そのプロパティはコンポーネントのタイプ/クラスであり、実際のインスタンスではありません。

現在のコンポーネントインスタンスを公開するAPIはまだ見つかりませんでした。それは存在するのですか、それとも私はこだわっていますか?

UPDATE

私は苦労していますユースケースは、ルート変更はありませんが、ウィンドウが閉じたとき。 window:beforeunloadが発火したとき、コンポーネントインスタンスが汚れていると尋ねる方法はありません。

UPDATE 2 作成した問題:https://github.com/angular/angular/issues/18634

+0

あなたの代わりに一般 'canDeactivate'ガードを実装し、各ルートにそのガードを割り当ててもらえますか? canDeactivate *は、コンポーネントのインスタンスを提供します。 – DeborahK

+0

はい、私は経路変更のためにそれを持っています。うまくいけば、 'canDeactivateChild'がすぐに実装され、さらにそれをきれいにするでしょう。しかし、私が現在苦労しているのは、ユーザーがウィンドウを閉じるときです。私は私の質問でそれを明確にしなかったが、私は今それを更新するだろう。 – pgreen2

+0

その時点であなたにそれを提供するものはないと思うので、それは機能要求である必要があります。 https://github.com/angular/angular/issues – DeborahK

答えて

0
+0

これらは、特定のコンポーネントの問題を解決する方法の良い例です。しかし、私たちの組織では、コンポーネントが1000個でなくても100個を持つことを期待しており、毎回同じコードを必要とするすべてのコンポーネントを1人ずつ防ぎたいと考えています。 – pgreen2

関連する問題