2017-08-29 34 views
4

我有一個常規的角4應用程序,我使用路由器,ActivatedRoute.params.subscribe,[routerLink]等在頁面之間導航並解釋URL。如何在Angular 4中對頁面結構/路徑進行Encapsulate?

現在這導致了一個事實,即我有很多「魔術字符串」飛來飛去,因爲許多不同的.ts文件在它們中都有url碎片。當然,它是有效的,因爲它們匹配,但似乎有點糾結於我。這裏是一個隨便舉個例子:

<a [routerLink]="['/foo']">Home</a> <a [routerLink]="['/foo/item', 1]">Item 1</a> <a [routerLink]="['/foo/item', 2]">Item 2</a>

我有一個想法是建立一個確實的URL建設的組成部分,因此知道的URL結構的服務。這只是我有的一個想法,但我並不是那種有角度的經驗,也許「神奇的弦」是出於某種原因去的方式。

是否有一個最佳實踐來保持您的組件的url結構?

+0

我會配置它們的組件 –

+0

@MaximKoretskyi,即就至少得拿到的網址了HTML模板。 Thx的想法! – clemens

+0

不用客氣,那麼你可以實現保存完整路由映射的服務,並且可以根據當前組件路徑找出可能的路由,它使用當前路由'service.get(currentRoute)'並返回可能的路線列表,然後您可以在模板中使用它們 –

回答

2

這就是爲什麼我一直在使用我的組件中的路由器依賴項,並且每次都手動導航到每個目標。當然,如果路線發生變化,我將不得不改變一些字符串,但我沒有問題。

爲此,我還創建了一個導航組件,可以顯示我的應用程序的路線。我甚至試圖用很多元數據和權限管理動態地構建我的應用程序路線,但是最終我摧毀了我的懶惰加載可能性,所以我不建議這樣做。

對我來說,最好的事情是建立一個導航組件,它將消耗一個路由器配置(這取決於你的需求)。 這裏是我說的:https://github.com/akveo/ng2-admin/blob/master/src/app/pages/pages.menu.ts

和演示程序:https://github.com/akveo/ng2-admin

+0

是的,這也是一個有趣的想法 –