angular 2延迟加载 - 来自服务器

时间:2016-10-11 17:15:57

标签: ajax angular angular2-routing

我一直在使用延迟加载工作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没有等待服务器结果并返回空数据。

有没有办法等待服务器数据然后将数据添加到路由?

1 个答案:

答案 0 :(得分:0)

仅使用NgModule进行基本路由设置(/welcome等),然后在应用中的其他位置加载路由并更新路由器配置。然后,您可以使用resetConfig()

this.http.get('/api/getRoutes')
  .subscribe(config => this.router.resetConfig(config))