2016-05-05 66 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

相关问题