#ajax #angular #angular2-routing
#ajax #angular #angular2-маршрутизация
Вопрос:
Я работал над проектом 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:
Используйте NgModule
только для базовой настройки маршрутизации ( /welcome
и т. Д.), Затем где-нибудь еще в вашем приложении загружайте маршруты и обновляйте конфигурацию маршрутизатора. Затем вы можете использовать resetConfig()
:
this.http.get('/api/getRoutes')
.subscribe(config => this.router.resetConfig(config))