我正在开发一个包含Ex网址的多租户应用:“https://example.com/ { portalID } /登录”,其中portalID
将客户更改为客户。所以初始登录看起来像这样。
https://example.com/portalId/Login
在登录页面,我有一个文本框和一个按钮。因此,文本框接受portalId
和onclick,我想更改网址中的portalId
而不重页加载。
代码:
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设置为基本href的一部分。 现在使用测试框我想覆盖该值。
对于Client1: 因此,初始网址为https://example.com/portalId/Login“。 当我在文本框中输入任何数字时,URL应更改为 例如:https://example.com/21/Login 我存储在会话存储中的Portal和JWT令牌。 成功登录后,每个路由都必须具有portalID。 像这样的东西 https://example.com/21/home
对于Client2:在新窗口中(现在PortalId为45) 网址为https://example.com/45/Login 此处,portalID和JWT令牌也保存在会话存储中。 成功登录后,每个路由都必须具有portalID。 像这样的东西 https://example.com/45/home
答案 0 :(得分:2)
这必须使用路由来完成。请遵循本教程:https://www.learnhowtoprogram.com/javascript/angular-extended/dynamic-routing-navigation。您必须在代码中设置要导航到的路线。例:
this.router.navigate([**DyanamicPortalID**, 'Login']);