我一直在使用延迟加载工作Angular 2项目。它运行良好,但我需要的是从服务器获取模块名称,然后创建一个路由,但它不起作用。
这就是我所拥有的:
import { Routes, RouterModule } from '@angular/router';
function getRoutes(): Routes{
let x: any = [
{path: '', redirectTo: 'welcome', pathMatch: 'full'},
{path: 'backend', loadChildren: 'app/backend/backend.module'}
]
return x;
}
export const routes: Routes = routess();
export const routing = RouterModule.forRoot(routes);
这就是,我需要什么:
import { Routes, RouterModule } from '@angular/router';
function getRoutes(): Routes{
let x: any;
$.get( "api/getRoutes", function( data ) {
x = data; //object array from server
});
return x;
}
export const routes: Routes = routess();
export const routing = RouterModule.forRoot(routes);
问题是,函数getRoutes
没有等待服务器结果并返回空数据。
有没有办法等待服务器数据然后将数据添加到路由?
答案 0 :(得分:0)
仅使用NgModule
进行基本路由设置(/welcome
等),然后在应用中的其他位置加载路由并更新路由器配置。然后,您可以使用resetConfig()
:
this.http.get('/api/getRoutes')
.subscribe(config => this.router.resetConfig(config))