【问题标题】:Multiple named router-outlet angular 2多个命名路由器出口角度2
【发布时间】:2016-10-28 12:36:53
【问题描述】:

我想通过子路由显示不同的视图。例如,我希望我的模板包含多个路由器插座

Version: @angular/router": "3.0.0-alpha.7"

<router-outlet></router-outlet>
<router-outlet name="route1"></router-outlet>
<router-outlet name="route2"></router-outlet>

在我的路由器中,我想指定路由器的名称。

正如我在一个问题中看到的,解决方案是指定 AuxRoute,但此版本中不存在 AuxRoute。

{path: '/',        component: HomeComponent, as: 'Home'},
new AuxRoute({path: '/route1', component: Route1Component, as: 'Route1'}),
new AuxRoute({path: '/route2', component: Route2Component, as: 'Route2'})

在 angular 2 官方网站上我发现可以有多个路由器,但我找不到任何资源。

https://angular.io/docs/ts/latest/guide/router.html

A template may hold exactly one unnamed &lt;router-outlet&gt;. The router supports multiple named outlets, a feature we'll cover in future.

【问题讨论】:

  • 只是部分实现。
  • 如果它只是部分实现,为什么还要在文档中提及它?这只会把人们引向死胡同。

标签: angular angular-routing


【解决方案1】:

当前版本多命名 router-outlet(对于 angular2 RC.6^)如下所示:

路由器配置

const appRoutes: Routes = [{   
    path: 'home',
      component: HomeComponent,
      children: [
        { path: '', component: LayoutComponent },
        { path: 'page1', component: Page1Component, outlet: 'route1' },
        { path: 'page2', component: Page2Component, outlet: 'route2' },
        { path: 'page3', component: Page3Component, outlet: 'route3' }
      ]
    }, {
      path: 'articles',
      component: ArticlesComponent,
      children: [
        { path: '', component: LayoutComponent },
        { path: 'article1', component: Article1Component, outlet: 'route1' },
        { path: 'article2', component: Article2Component, outlet: 'route2' }
      ]
    },  { 
      path: '', 
      redirectTo: '/home',
      pathMatch: 'full'
   }
];
Home 组件中的

模板:

<router-outlet></router-outlet>
<router-outlet name="route1"></router-outlet>
<router-outlet name="route2"></router-outlet>
<router-outlet name="route3"></router-outlet>

还有一个来自根组件的导航示例:

constructor(router: Router) {
  router.navigateByUrl('/home/(route1:page1//route2:page2//route3:page3)');
} 

另一种方式:

<a [routerLink]="['/home', { outlets: {'route1':['page1'],'route2': ['page2'] }}]"></a>

这里是直播Plunker Example

另见

【讨论】:

  • &lt;a [routerLink]="['/team/3(aux:/chat;open=true)']"&gt;Test&lt;/a&gt; 怎么样,我应该如何设置多视图链接?谢谢
  • 怎么会这样:router.navigateByUrl('/home/(page1//route1:page2//route2:page3)'); } 使用 [routerLink]="" 时的样子?
  • @Robin Gruschke 我改变了答案
  • 空白的有必要吗?
  • 如果 url 是这样的:localhost:4200/route1/(outlet:article1) 然后尝试使用以下代码导航:this.router.navigate([ '/route1', {outlets: { outlet: 'article1' }} ]);
猜你喜欢
  • 1970-01-01
  • 2017-11-01
  • 2021-01-07
  • 2018-04-16
  • 2017-02-05
  • 1970-01-01
  • 2017-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多