2

在Angular2應用程序中(使用最終的1.x版本),我有一個包含多個選項卡的頁面。父狀態/samples/{id}爲每個選項卡都有一個子路由。例如。 /samples/{id}/location/samples/{id}/executionAngular2路由器:如何從父路徑到子路徑共享一個值?

示例數據是由服務器API在一個請求中發送的一個大對象,其中包含所有選項卡的數據。所以我想只加載一次,當父路由被激活時(在組件代碼中,或者可能在解析中),然後在我的所有選項卡中讀取它。

有沒有辦法直接從父組件共享一個對象到子路由的組件?有點像範圍在Angular 1中被繼承了?

我知道我可以使用服務來共享對象,我只是好奇,如果有一個內置的解決方案。

我也知道可以從父路由獲取路由參數,但在這種情況下它不會非常有用。

回答

3

「內置解決方案」實際上是使用共享服務。

也有使用@Input()裝飾器的選項,但在你的情況下它不適用,因爲你正在使用路線,據我所知。這隻適用於父母子女關係,子女在父母子女內部。

另一種選擇是使用Route Data Resolver,它在激活路由之前解析數據,但由於數據已經加載,因此共享服務選項是您的案例的最佳解決方案。

+1

謝謝!最後,我在父路由中使用了一個解析器來加載數據一次。數據保存在服務內的簡單緩存中。然後我可以在每個子路由組件中同步訪問已加載的數據。 –