Angular 2:共享相同解析器的兄弟姐妹子路由

时间:2016-10-29 14:45:55

标签: angular routes resolver

我想弄清楚是否有更优化的方法在两个同级儿童路线之间共享相同的解析器。以下是路线与解析器相关的示例。

import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import { NgModule } from '@angular/core';
export const routes = [{
        path: '',
        component: parentComponent,
        canActivate: [AuthGuard],
        resolve: {
            someData: someDataResolver
        },
        children: [
            { path: '', redirectTo: '0', pathMatch: 'full' },
            { path: '0', 
                component: someComponent1,
                resolve: {
                    someData1: someData1Resolver,
                    someData2: someData2Resolver,
                }
            },
            { path: '2', 
                component: someComponent2,
                resolve: {
                    someData2: someData2Resolver
                }
            }
            ... a bunch more children routes/components with resolvers

        ]
    }]

现在,我正在重复每个儿童路线的解析器呼叫,我认为这不是最佳选择。有谁知道是否有更好的方法来共享共享兄弟儿童解析器的数据?我考虑将数据从重复的解析器设置为共享服务,然后另一个子兄弟路由将从服务访问数据(而不是在解析器中进行另一个api调用)。还有其他更优化的解决方案吗?

1 个答案:

答案 0 :(得分:7)

您可以使用无组件父路线添加其他级别,并将解析器向上移动到此级别:

MouseCatcher