4

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);
 }

ただし、これは app.module.ts 内の customProvider (上に記述) で行う必要があります。

サービスを呼び出してみましたが、app.module.ts ファイルからはできないようです。さらに、ライフサイクルの問題があります。アプリがロードされるとき、app.module.ts の customProvider チェックは、this.routePath が定義される前に実行されます。

4

0 に答える 0