Угловой 4/5 - динамическое изменение базы - PullRequest
0 голосов
/ 08 мая 2018

Я работаю над мультитенантным приложением с Ex URL: "https://example.com/{portalID}/Login", где portalID меняет клиента на клиента. Таким образом, первоначальный логин выглядит следующим образом.
https://example.com/portalId/Login
In страница входа, у меня есть текстовое поле и кнопка. Таким образом, текстовое поле принимает portalId и при нажатии, я хочу изменить portalId в URL без перезагрузки страницы.

Код:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { APP_BASE_HREF, Location } from '@angular/common';

import { AppComponent } from './';
import { getBaseLocation } from './shared/common-functions.util';

@NgModule({
  declarations: [AppComponent],
  imports: [
    BrowserModule,
    HttpModule,
  ],
  bootstrap: [AppComponent],
  providers: [
    appRoutingProviders,
    {
        provide: APP_BASE_HREF,
        useFactory: getBaseLocation
    },
  ]
})
export class AppModule { }

export function getBaseLocation() {
    let basePath = sessionStorage.getItem('portalId') || 'portalId'; // Default
    return '/' + basePath;
}

В производственной сборке я устанавливал portalID как часть base href. Теперь, используя поле проверки, я хочу переопределить значение.

Для клиента1: Итак, начальный URL-адрес https://example.com/portalId/Login". Когда я ввожу любое число в текстовое поле, URL должен измениться на Пример: https://example.com/21/Login Портал и токен JWT я храню в хранилище сессий. После успешного входа в систему каждая маршрутизация должна иметь идентификатор портала. Что-то вроде этого https://example.com/21/home

Для клиента2: в новом окне (сейчас PortalId равен 45) URL-адрес https://example.com/45/Login Здесь также portalID и токен JWT сохраняются в хранилище сессии. После успешного входа в систему каждая маршрутизация должна иметь идентификатор портала. Что-то вроде этого https://example.com/45/home

1 Ответ

0 голосов
/ 08 мая 2018

Это должно быть выполнено с использованием маршрутизации. Следуйте этому уроку: https://www.learnhowtoprogram.com/javascript/angular-extended/dynamic-routing-navigation. Вы должны будете указать в своем коде маршрут, по которому хотите перейти. Пример: this.router.navigate([**DyanamicPortalID**, 'Login']);

...