2016-05-05 79 views
6

在angularJS中,ui-router允許我們使用兩個使用狀態相同路由的組件(如本例中的Angular UI Router: Different states with same URL?)。Angular2 - 具有相同路由的兩個組件

是否有可能在angular2中實現相同的行爲?如果可以鏈接/提供一些示例或解決方法?

這裏的用例與Facebook或Twitter類似,URL的內容保持不變,但內容會根據您是否登錄而改變。

到目前爲止,我可以考慮實現此目的的唯一方法是在'父'模板中使用* ngIf來選擇兩個「子」組件之一的選擇器。事情是這樣的:

<home-logged-in *ngIf="authenticated()"></home-logged-in> 
<home-logged-out *ngIf="!authenticated()"></home-logged-out> 

是否有任何建議的方式來做到這一點?

感謝

回答

0

您可以用路由參數,如

/article/:id/detail

/article/123/detail/article/abc/detail導致相同的組件。

例如見本教程https://angular.io/docs/ts/latest/tutorial/toh-pt5.html(搜索「與參數配置路由」)

+1

感謝您的回答,但是這並不是我所期待的。我需要的是有條件地導致2個組件的1條路徑。像這樣的僞代碼: 請求'/ home'; if(authenticated == true): 轉到'authenticated_home'組件 else 轉到'public_home'組件 – dem00n

+0

我明白了。我很確定路由器本身不提供任何支持。我猜'* ngIf'是一個很好的解決方法。如果爲已登錄用戶傳遞路由但用戶未登錄(反之亦然),則使用不同路由並自動重定向到其他變體,如此處所述:http://www.captaincodeman.com/2016/03/31/angular2-route-security/ –

+1

我曾考慮過,但這會改變瀏覽器中的URL,我試圖避免。現在我將與* ngIf一起去看看是否有其他人提出了替代解決方案。 – dem00n

相關問題