我正在开发一个多租户应用程序,其前url为:“https://example.com/{portalid}/login”,其中portalID将客户更改为客户。所以最初的登录是这样的。https://example.com/portalId/Login在登录页面中,我有一个文本框和一个按钮。所以文本框接受portalId并单击,我想在不重新加载页面的情况下更改url中的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设置为base-ref的一部分。
现在使用测试框,我想覆盖这个值。
客户1:
因此,初始url是https://example.com/portalId/Login
当我在文本框中输入任何数字时,url应该改为
EX:https://example.com/21/Login
我正在会话存储中存储的portal和jwt令牌。
成功登录后,每个路由都必须具有portalid。
像这样的东西
https://example.com/21/home
对于客户2:在新窗口中(现在Portalid是45)
网址https://example.com/45/Login
这里portalid和jwt令牌也保存在会话存储中。
成功登录后,每个路由都必须具有portalid。
像这样的东西
https://example.com/45/home

最佳答案

这必须通过路由来完成。遵循本教程:https://www.learnhowtoprogram.com/javascript/angular-extended/dynamic-routing-navigation。您必须在代码中设置要导航到的路由。例子:
this.router.navigate([**DyanamicPortalID**, 'Login']);

09-25 19:48