Angular4 - 路由器模块提供者 AOT
Angular4 - Router module provider AOT
这是我对路由器提供商的声明:
@NgModule({
imports: [RouterModule.forRoot(RoutesFactory.buildRoutes())],
exports: [RouterModule]
})
export class RouterModuleProvider { };
在 AOT 中编译,出现此错误:
Error encountered resolving symbol values statically. Calling function
'getRoutes', function calls are not supported. Consider replacing the
function or lambda with a reference to an exported function, resolving
symbol RouterModuleProvider
这里是RoutesFactory.buildRoutes
的内容
static buildRoutes() {
let returnRoutes: Routes = [
{ path: '', redirectTo: '/login', pathMatch: 'full' },
{ path: 'login', component: ViewsModule.LoginViewComponent }
];
let appendRoutes = (items: MenuItem[], routes: Routes) => {
for (let item of items) {
let route: Route = {
path: item.Path, component: item.Component, children: []
};
if (item.Children != null)
appendRoutes(item.Children, route.children)
routes.push(route);
}
};
appendRoutes(RoutesFactory.getMenus(), returnRoutes);
return returnRoutes;
}
RoutesFactory.getMenus() returns 对象的静态内部数组。 (没有从后端加载)
有什么办法可以解决这个问题吗?
不幸的是,如错误所示,元数据的所有内容(在 @NgModule(...)
声明内)都必须是静态可解析的。这意味着在 buildRoutes
函数中不能有任何逻辑,只有静态声明。
但是,似乎有一种专门用于动态定义路由的替代方法。请看这个答案:。
这是我对路由器提供商的声明:
@NgModule({
imports: [RouterModule.forRoot(RoutesFactory.buildRoutes())],
exports: [RouterModule]
})
export class RouterModuleProvider { };
在 AOT 中编译,出现此错误:
Error encountered resolving symbol values statically. Calling function 'getRoutes', function calls are not supported. Consider replacing the function or lambda with a reference to an exported function, resolving symbol RouterModuleProvider
这里是RoutesFactory.buildRoutes
的内容static buildRoutes() {
let returnRoutes: Routes = [
{ path: '', redirectTo: '/login', pathMatch: 'full' },
{ path: 'login', component: ViewsModule.LoginViewComponent }
];
let appendRoutes = (items: MenuItem[], routes: Routes) => {
for (let item of items) {
let route: Route = {
path: item.Path, component: item.Component, children: []
};
if (item.Children != null)
appendRoutes(item.Children, route.children)
routes.push(route);
}
};
appendRoutes(RoutesFactory.getMenus(), returnRoutes);
return returnRoutes;
}
RoutesFactory.getMenus() returns 对象的静态内部数组。 (没有从后端加载)
有什么办法可以解决这个问题吗?
不幸的是,如错误所示,元数据的所有内容(在 @NgModule(...)
声明内)都必须是静态可解析的。这意味着在 buildRoutes
函数中不能有任何逻辑,只有静态声明。
但是,似乎有一种专门用于动态定义路由的替代方法。请看这个答案: