グローバルダーティチェッカーをAngularで実装しようとしています。私たちには、各コンポーネントの設定が必要な解決策がありますが、もっと一般化したいと考えていました。Angularで現在アクティブなコンポーネントインスタンスを照会します。
各アクティブなコンポーネントをチェックして、ユーザーにプロンプトを表示するかどうかを通知するグローバルコードを作成しました。少なくとも、私はそれがそうしていると思った。私の最初の計画は、NavigationEnd
イベントのrouter.events
にリストアップされ、component
プロパティを公開しているため、現在のActivatedRoute
を検査していました。ただし、そのプロパティはコンポーネントのタイプ/クラスであり、実際のインスタンスではありません。
現在のコンポーネントインスタンスを公開するAPIはまだ見つかりませんでした。それは存在するのですか、それとも私はこだわっていますか?
UPDATE
私は苦労していますユースケースは、ルート変更はありませんが、ウィンドウが閉じたとき。 window:beforeunload
が発火したとき、コンポーネントインスタンスが汚れていると尋ねる方法はありません。
UPDATE 2 作成した問題:https://github.com/angular/angular/issues/18634
あなたの代わりに一般 'canDeactivate'ガードを実装し、各ルートにそのガードを割り当ててもらえますか? canDeactivate *は、コンポーネントのインスタンスを提供します。 – DeborahK
はい、私は経路変更のためにそれを持っています。うまくいけば、 'canDeactivateChild'がすぐに実装され、さらにそれをきれいにするでしょう。しかし、私が現在苦労しているのは、ユーザーがウィンドウを閉じるときです。私は私の質問でそれを明確にしなかったが、私は今それを更新するだろう。 – pgreen2
その時点であなたにそれを提供するものはないと思うので、それは機能要求である必要があります。 https://github.com/angular/angular/issues – DeborahK