Загружать все родительские маршруты динамически в angular2 при загрузке приложения
Я использую angular 2 для создания приложения, в котором мне нужно проверить базовый href и сопоставить его с моими предопределенными наборами родительских маршрутов в моем файле app.routes.ts.
В настоящее время я создал жестко запрограммированный массив parentRoutes = ['login', 'signup', 'admin', 'user', 'manage'] в провайдере, который используется следующим образом:
export let customProvider: any = {
provide: APP_BASE_HREF,
useFactory: () => {
let tenant = window['_app_base'];
let parentRoutes = ['login', 'signup', 'admin', 'user', 'manage'];
if (tenant !== '/') {
if (parentRoutes.indexOf(tenant) > -1)
window['_app_base'] = '/notenant';
else
window['_app_base'] = tenant;
}
else
window['_app_base'] = '/default'; // get default tenant from API
return window['_app_base'];
}
}
Мне нужно загрузить этот массив parentRoutes динамически, используя следующий сервис:
for (let i = 0; i < this.router.config.length; i++) {
this.parentRoutes .push(this.router.config[i].path);
}
Но это должно быть сделано в customProvider (написано выше) внутри app.module.ts
Я попытался позвонить в службу, но это не представляется возможным из файла app.module.ts. Кроме того, существует проблема жизненного цикла. Во время загрузки приложения проверка customProvider в app.module.ts выполняется до определения this.routePath.