我正在开发一个在 Websphere Application Server Liberty 配置文件版本 17.0.0.3 下运行的应用程序和服务器。我已经在 Angular 4 中开发了 Web 应用程序。只要我不尝试刷新/重新加载网页,一切都运行良好。当我尝试重新加载网页时,收到 404 Not Found 错误。我怀疑问题是完整的 url 在刷新时被传递给服务器。(请参阅 Ben Cole 对这篇文章的回复: #/ 在 url 中的含义是什么?)
我的问题是我不确定将主题标签注入应用程序代码中的 url 的最佳方法是什么。我尝试简单地将其添加到 html 中的 routerLink 值,但 url 被编码,将主题标签转换为 %23,然后我的路由器无法识别 url。
我的 Angular 4 应用程序使用来自 @angular/router 的 Routes 和 RouterModule。例如,我的路线定义如下:
const routes: Routes = [
{
path: '', component: LayoutComponent,
children: [
{ path: 'dashboard', loadChildren: './dashboard/dashboard.module#DashboardModule' },
{ path: 'versions', loadChildren: './versions/versions.module#VersionsModule' }
]
}
在我的 html 中,我以这种方式导航到它们:
<a [routerLink]="['/versions']"
[routerLinkActive]="['router-link-active']" class="list-group-item">
<i class="fa fa-fw"></i>Versions</a>
我的服务器网址是:http://localhost:9080/zss
。当我导航到我的仪表板时,网址是:http://localhost:9080/zss/dashboard
但如果我尝试刷新此网页,我会收到 404 Not Found 错误。我想我需要让 Angular 应用程序导航到以下网址: http://localhost:9080/zss/#dashboard
但我不确定在哪里调整代码来执行此操作或如何克服发生的 uri 编码。