Загружать все родительские маршруты динамически в 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.

0 ответов

Другие вопросы по тегам