Angular 2路由器 - 命名出口

Kun*_*gen 7 angular2-routing ngrx angular

文档不是很好,但我试图在同一页/路由上有不同的路由器出口.

我的app.component.html中有这个

<router-outlet></router-outlet>
<router-outlet name="dashboard"></router-outlet>
Run Code Online (Sandbox Code Playgroud)

我的app.routes.ts

{
    path: '',
    component: HomeComponent,
    outlet: 'primary'
},
{
    path: '',
    component: DashboardComponent,
    outlet: 'dashboard'
},
{
    path: '**',
    redirectTo: '404'
}
Run Code Online (Sandbox Code Playgroud)

所以在我的首页上(即"example.com",而不是"example.com;仪表板:仪表板")我想在主路由器插座中显示Home组件,在显示板插座中显示我的Dashboard组件.这适用于ngrs/router,但由于它已被弃用,我正在尝试迁移.没有仪表板:角度/路由器中的仪表板是否可能?

有了这个配置,我正被重定向到404.我也尝试了这个没有运气:

{
    path: '',
    component: HomeComponent,
    children: [
        {
            path: '',
            component: DashboardComponent,
            outlet: 'dashboard'
        }
    ]
},
Run Code Online (Sandbox Code Playgroud)

有没有人设法让命名的路由器插座工作?

更新 关于从ngrx/router到angular/router的迁移说明,你应该能够:

{
    path: 'blog',
    component: HomeComponent,
    outlet: 'main'
},
{
    path: 'blog',
    component: RegisterComponent,
    outlet: 'dashboard'
}
Run Code Online (Sandbox Code Playgroud)

但是当我访问example.com/blog时,我在控制台中收到此错误:

错误:无法匹配任何路线:'blog'

https://github.com/ngrx/router/blob/master/docs/overview/migration.md

Fab*_*oli 3

试试这个配置:

{
    path: 'wrap',
    component: HomeComponent,
    children: [
        {
            path: 'dash',
            component: DashboardComponent,
            outlet: 'dashboard'
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

和:

this.router.navigateByUrl('/wrap(dashboard:dash)');
Run Code Online (Sandbox Code Playgroud)

我不知道为什么需要一个 url 片段(比如我添加的“wrap”),但它有效......

和其他人:

{
    path: 'blog',
    component: HomeComponent,
    outlet: 'main'
},
{
    path: 'blog',
    component: RegisterComponent,
    outlet: 'dashboard'
}
Run Code Online (Sandbox Code Playgroud)

和:

this.router.navigateByUrl('/(main:blog)');
this.router.navigateByUrl('/(dashboard:blog)');
Run Code Online (Sandbox Code Playgroud)