2017-01-02 46 views
0

在帶有UI路由器模塊的angularjs 1.x中,當來自ANY狀態/控制器的路由改變時,我可以訂閱ONE ONE類似的app.js的狀態/路由更改。全局路由改變是否存在於面向組件的角度2

如何能impl。與ng2相同的行爲?

我只想ONE認購route.params在ONE類在那裏我可以檢查URL,然後決定做什麼。

我認爲app.component.ts是適合它的地方,但是那裏的路由改變只發生在整個頁面被刷新時!

還是有可能一個組件可以有一個基類,我可以實現基本功能只是一次?這剛剛出現在我的腦海裏...

回答

0

並不那麼簡單。並非每條路線都必須有特定的參數。您可以創建一個路由組件,該路由組件由定義了該參數的路由添加,並使該路由的所有其他路由爲子路由。然後將訂閱添加到此頂部路由組件的參數。

另一種方法是訂閱路由器事件,如Angular 2 router event listener中所述,然後從第一個子路由的路由器狀態中讀取參數。

+0

Approach1不適用於我,因爲我沒有技術上看過的兒童路線。我有一個項目列表視圖,您可以在其中打開一個項目,然後用更多的並排視圖深入其他數據。但項目路線沒有兒童財產!但我認爲這將有多重進展,我真的在考慮重新設計我的項目頁面作爲父項目。方法2將非常可怕,無法在每個組件中訂閱NavEnd和Nav start。我剛剛讀了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