【问题标题】:Activate multiple routes at once in Angular 2+在 Angular 2+ 中一次激活多个路由
【发布时间】:2017-11-11 12:53:18
【问题描述】:

我正在尝试一次在命名路由器出口中打开两条子路由。这将允许我让router outlet A 始终填充特定于内容的组件,例如login.

第二个router outlet B 将有一个可重用的组件来处理路由配置中给定的data {...}。 (所以还是要看具体路线)。

这意味着路由/login 应该使用FrameComponent 作为布局框架,并将一个组件加载到router outlet view,并将一个组件加载到router outlet control-strip

我的FrameComponent 的布局目前如下所示:

<router-outlet name="view"></router-outlet>
<router-outlet name="control-strip"></router-outlet>

我的路由器配置如下:

...
{
    path: 'login',
    component: FrameComponent,
    canActivate: [ UIGuard, hasInternetConnection, authLoggedOutService ],
    data: {
        navigationBack: true
    },
    children: [
        {
            path: '**',
            component: LoginEmailComponent,
            outlet: 'view'
        },
        {
            path: '**',
            component: ControlStripComponent,
            outlet: 'control-strip'
        }
    ]
},
...

我面临的问题是路由器配置在第一次点击时停止,所以/login/** 为真,并且 ControlStripComponent 永远不会被触及。

【问题讨论】:

    标签: angular angular-routing


    【解决方案1】:

    您似乎将子路由的概念与辅助(或辅助)路由的概念混为一谈。听起来您应该在这里使用辅助路由而不是子路由。

    这是导航到辅助路线所需的语法:

    this.router.navigate([{outlets: { popup: ['messages']}}]);
    

    或者一次导航到两条辅助路线:

    this.router.navigate([{outlets: { view: ['routeA'], control-strip: ['routeB']}}]);
    

    配置看起来像这样:

        {
            path: 'routeA',
            component: LoginEmailComponent,
            outlet: 'view'
        },
        {
            path: 'routeB',
            component: ControlStripComponent,
            outlet: 'control-strip'
        }
    

    【讨论】:

    • 是的,但这意味着某处的代码决定了接下来的路线是什么,并且这些路线可以是独立的。但是,我希望每条路线每次都加载两个特定的组件。这两条路线始终以相同的方式链接。这似乎不是一个干净的解决方案。除非我当然编写了一段在每个父路由上运行并激活它的代码,它具有一致的名称但名称取决于父路由。
    • 如果这两个组件是“链接”的,你能用嵌套组件代替路由吗?
    • 问题在于我无法通过常规嵌套组件发送数据或参数。
    • 您可以通过@input 属性。但我对您的应用了解得不够多,无法真正提出解决方案。
    猜你喜欢
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 2018-07-27
    • 2018-05-05
    • 1970-01-01
    相关资源
    最近更新 更多