2016-10-11 4 views
1

Я работаю над проектом Angular 2, используя ленивую загрузку. Он работает хорошо, но мне нужно получить имя модуля с сервера, а затем создать маршрут, но он не работает.угловая 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

Используйте NgModule только для базовой настройки маршрутизации (/welcome и т. Д.), Затем в другом месте в маршрутах загрузки приложения и конфигурации маршрутизатора обновлений. Затем вы можете использовать resetConfig():

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

Хорошо, большое вам спасибо. –

Смежные вопросы