最近我为一个项目编写了一个自定义逻辑,该逻辑重用了路由变量
例如
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
方法,一切都会起作用。但是,这并不令人满意,因为我需要能够从头开始创建角度而无需进行任何更改。