Angular 4/5 - 动态更改基本href

时间:2018-05-08 04:51:11

标签: angular angular-cli angular5

我正在开发一个包含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

1 个答案:

答案 0 :(得分:2)

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