我有一堆模块在运行时根据JSON文件的内容设置路由(这意味着我 在这里使用一个函数,除非我想打破我以前的逻辑)。我有一个函数将数据解析为Routes
对象然后返回它:
export function getRoutes(): Routes {
let routes: Routes = [
//default component
{
path: '',
component: AComponent
}
];
for(let module of APP_CONFIG.modules){
routes.push({
path: module.path,
loadChildren: module.modulePath
})
}
return routes;
}
然后我只需在我的module
中调用该函数:
@NgModule({
declarations: [
//[...]
],
imports: [
//[...]
RouterModule.forRoot(getRoutes())
],
providers: [
//[...]
],
bootstrap: [ AppComponent ]
})
export class AppModule { }
但是,我的项目(由angular-cli生成)将无法构建:
ERROR in 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
我按照错误消息中的说明操作,然后构建一次。然后它继续以相同的信息一遍又一遍地失败。
所以我想我的问题是:我该如何解决这个愚蠢的问题?
答案 0 :(得分:0)
AoT不支持在路线中直接使用功能。要么避免使用它,要么从其他模块中导出它。
不要:
function random() {
return [{
path: "",
component: AppViewComponent
}];
}
const SAMPLE_APP_ROUTES: Routes = random();
执行:
const SAMPLE_APP_ROUTES: Routes = [{
path: "",
component: AppViewComponent
}];
或
import { random } from "./random.routes.ts";
const SAMPLE_APP_ROUTES: Routes = random();
来源:https://github.com/rangle/angular-2-aot-sandbox#func-in-routes-top