为导航栏重用角度路由器配置

时间:2018-12-28 08:37:38

标签: angular angular-routing

最近我为一个项目编写了一个自定义逻辑,该逻辑重用了路由变量

例如

export const routeValues: Routes = [
    {
        path: 'login',
        component: LoginComponent,
        canActivate: [IsLoggedOutGuardService],
        data: {
            title: 'Login Page',
            navBar: {
                enabled: false,
            }
        }
    },
...

然后我按如下方式将变量重新用作路由器

imports: [ RouterModule.forRoot(values) ],

一切正常。然后,我开始编写一个遍历routeValues树的函数(因为它可以与子对象嵌套)并返回一个将用于呈现导航栏的数据结构。

如下所示

this.navItems = this.processRoutes(routeValues);

processRoutes返回已处理的数据结构。将其放置在DefaultComponent('default-component.ts`)中。

现在,当我在DefaultComponent中重用routeValues数据结构时,渲染将停止工作。但是,如果我复制了routeValues变量,我们就将复制品称为routeDuplicate并进行

this.navItems = this.processRoutes(routeDuplicate);

DefaultComponent中,一切正常。但这违反了渲染navBar并通过一个源设置路由的目的。

或者,我尝试了

export class RouteReturn {

    private newRoutes: Routes = [...];

    public static returnRoute() {
        return new RouteReturn().newRoutes;
    }
}

做了

imports: [ RouterModule.forRoot(RouteReturn.returnRoute()) ],

但是,每当我从头开始运行npm run start时,都不会编译并给出错误信息

ERROR in Cannot read property 'loadChildren' of null

但是,如果我先做npm run start,然后在RouterModule.forRoot中更改了路由语句,以使用静态returnRoute方法,一切都会起作用。但是,这并不令人满意,因为我需要能够从头开始创建角度而无需进行任何更改。

0 个答案:

没有答案