【问题标题】:Angular 2 routes with same URL? [duplicate]具有相同 URL 的 Angular 2 路由? [复制]
【发布时间】:2016-01-11 22:22:51
【问题描述】:

像 Angular UI Router 一样,Angular2 中是否可以有多个具有相同 URL 的路由?例如以下两条路线:

{ path: '/home', name: 'Home', component: HomeComponent} ,
{ path: '/home', name: 'Dashboard', component: DashboardComponent}

目前,控制台中出现路由冲突的错误。

【问题讨论】:

  • 如果你走那条路,你希望 angular 渲染两个组件中的哪一个?
  • 可能是最后一个:)。其实我明白你的意思。但它就像 UI-Router 一样提供了多个状态,它们有一个链接到同一个 URL 的 prent。
  • 我认为在 ui-router 中说明您需要什么功能或添加一个示例说明您是如何做到的可能会更容易

标签: angular angular2-routing


【解决方案1】:

如果你想要 ui-router 样式命名为 ui-view,你可以使用 AuxRoute

https://angular.io/docs/ts/latest/api/router/AuxRoute-class.html

另外,参考这个问题。 Is Angular 2 Auxiliary router broken?

例如:http://plnkr.co/edit/JsZbuR?p=preview

【讨论】:

  • 感谢您的回答@TheKojuEffect。问题是关于指向同一个 url 的多个视图,但每个视图都像一个完整的内容页面。顺便说一句,AuxRoutes 是一个不错的概念。
【解决方案2】:

您可以查看Angular2 - two components with the same route,那里讨论了可能的解决方案以实现您的目标。

  1. 在模板中使用 *ngIf 以根据评估条件使用不同的选择器。

    <home-logged-in *ngIf="authenticated()"></home-logged-in>
    <home-logged-out *ngIf="!authenticated()"></home-logged-out>
    
  2. 创建自定义路由器插座,它将根据评估条件加载特定组件。

  3. 根据评估条件重定向到不同的路由(参见源代码http://www.captaincodeman.com/2016/03/31/angular2-route-security/

此列表不是决定性的,可能还有其他方法可以实现您的目标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 2021-08-05
    相关资源
    最近更新 更多