Dynami c base-href для Angular - PullRequest
       34

Dynami c base-href для Angular

0 голосов
/ 17 марта 2020

У меня есть запрос от клиента на запуск приложения Angular с подпутем типа "www.domain.com: 9083 / portal". Проблема в том, что приложение angular не знает о подпути при загрузке. Единственная подсказка - это URL браузера. Сервер - это C# приложение Nancyfx.

Я пытался динамически определить base-ref с помощью скрипта

<script>
    // manually sets the <base> tag's href attribute so the app can be located in places other than root
    var split = location.pathname.split('/');
    var base = "";
    if (split.length > 1 && split[1] != "") {
      base += "/" + split[1] + "/";
    }
    window['_app_base'] = base;
    document.write("<base href='" + base + "' />");

  </script>

Но это привело к дополнительным проблемам.

Есть ли возможность создать base-ref в зависимости от вызываемого подпути. Поэтому base-ref для "www.domain.com: 9083 / portal" будет "/ portal", если сервер настроен для работы на "www.domain.com: 9083 / newapp", он будет "/newapp".

Это вообще возможно? Следующая проблема У меня есть REST API и для динамического обновления всех маршрутов (например, / api / user / getusers на portal / api / user / getusers) мне нужен доступ к base-href. Это хранится где-нибудь или доступно в Angular?

Спасибо за помощь С уважением

1 Ответ

0 голосов
/ 17 марта 2020

Используйте токен APP_BASE_HREF для дианмической установки базового URL.

app.module.ts

import { NgModule,Inject } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';

import { AppComponent } from './app.component';
import { RouterModule } from '@angular/router';
import { APP_BASE_HREF } from '@angular/common';

@NgModule({
  imports:      [ BrowserModule, FormsModule, RouterModule.forRoot([]) ],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ],
  providers: [
    {
      provide: APP_BASE_HREF,
      useFactory:()=>{
          return window.location.host === "www.domain.com:9083/portal" ? '/portal' : '/newapp';
      } 
    }
  ]
})
export class AppModule { 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...