2017-01-02 11 views
0

anglejs 1.xでUiルータモジュールを使用すると、ANY状態/コントローラからのルートが変更されたときにONEクラスの状態/ルート変更をサブスクライブすることができます。グローバルな経路変更がコンポーネント指向の角度2に存在する

どのようにインすることができますか。 ng2と同じ動作ですか?

は、私はURLをチェックして、何をすべきかを決めることができる場所だけONEONEクラスでroute.paramsのためにサブスクライブします。

私はapp.component.tsが適切な場所だと思っていましたが、ルートの変更はページ全体が再構築されたときにのみ行われます。

コンポーネントが基本機能を実装できるベースクラスを1回だけ持つことは可能でしょうか?これはちょうど私の心に来た...

答えて

0

それは簡単ではない。すべてのルートが特定のパラメータを持つ必要はありません。そのパラメータが定義されているルートによって追加されたルーティングされたコンポーネントを作成し、このルートの他のすべてのルートの子ルートにすることができます。次に、パラメータにサブスクリプションを追加して、このトップルーティングされたコンポーネントに追加します。

もう1つの方法は、Angular 2 router event listenerで説明されているようなルーターイベントを購読し、最初の子ルートのルーター状態からパラメーターを読み取ることです。

+0

技術的に見られる子ルートがないため、Approach1は私にとっては機能しません。私はプロジェクトを開いてから、残りのデータを並べて表示するプロジェクトリストビューを持っています。しかし、プロジェクトのルートは子供の財産を持っていません!しかし、私はこれが複数の進歩を遂げるだろうと思っています。私は自分のプロジェクトページを親として再設計することを本当に考えています。アプローチ2は、各コンポーネントでNavEndとNavを開始する必要があります。私はちょうどng2.3が完全なコンポーネントの継承をサポートしていることを読んでいます:https://scotch.io/tutorials/component-inheritance-in-angular-2 – Pascal

+0

...それはおそらく全体を簡単に購読することができます。私が親子アプローチについて考えるほど、過去に私はなぜそれに対してずっと戦っているのか分かりません。時間がたつにつれて物事を理解するためのすべてのようだ;-) – Pascal

0

試してみよう: 1)サービスroute-log.service.tsを作成し、Routerを注入してログを記録します。 2)あなたのapp.module.tsにroute-log.service.tsを入力してください。

+0

もっと説明できますか?私はどのように私の質問にマッチするのか分かりません:-) – Pascal

+0

これはapp.module.ts(root)に注入されるサービスなので、アプリケーションの起動後に実行されます。そして、あなたはそのサービス内のルータを "状態/ルートの変更を購読する"ために注入することができます。 – Timathon

関連する問題