html - 如何在 Angular 2 路由中动态更改基本 URL?

标签 html angular angular2-routing

目前,我在我的项目中设置了路由。每个新用户都被重定向到:

localhost:4200/default-path/login

一旦用户登录,他们将被重定向到 home 模块,该模块有一些用户可以导航到的子路由。

localhost:4200/default-path/home
localhost:4200/default-path/home/account
localhost:4200/default-path/home/account/profile
localhost:4200/default-path/home/dashboard

...等等。

现在,粗体部分已经在home模块中设置好了,不需要再编辑了。但是,我想更改 default-path到别的地方。

比如说,每个用户都可以属于三个项目之一:项目蓝色、红色或绿色。此信息仅在用户提交其凭据并点击登录按钮后可用。

我希望路由在登录后说的是:

localhost:4200/project-blue/home
localhost:4200/project-red/home
localhost:4200/project-green/home

请记住,粗体部分不是具有不同关联组件的不同模块,它们只是我希望在 URL 中看到的常量。

目前,我的 <base>索引中的标签类似于 <base href='/'>我正在尝试编辑此属性。我得到的是这样的:

processLoginSuccess(loginTicket): void {
    const routeName = loginTicket.baseUrl // returns 'project-red'
    let b = document.getElementsByTagName('base')[0]
    b.setAttribute('href', routeName )

    this._router.navigate(['/home']);
}

但这似乎行不通。

有什么想法吗?

最佳答案

除了设置 base 元素的 href 值,您还可以通过自定义操作提供 APP_BASE_HREF 以编程方式设置基本 URL。

这已经在这里讨论过:https://stackoverflow.com/a/41674411/415790

关于html - 如何在 Angular 2 路由中动态更改基本 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41632516/

相关文章:

javascript - Div 在页面加载时短暂出现 - 我该如何阻止它这样做?

PHP MySQL 密码重置表单未执行

angular - Visual Studio Code 在模板中找不到 Angular 变量的引用

angular - 如何防止matTooltip文本被截断?

Angular 2,另一个路由器 socket 内的RC5路由器 socket

typescript - 无法将任何路由与子路由和新的 Angular 2 RC1 路由器匹配

javascript - 创建基于 Web 的 GPS 星空图

javascript - 滑动 div 导致网页超出我的页脚

angular - 如何在 Angular 5 中动态设置选定的下拉值

Angular queryParamMap 为空,然后填充