Angular 通过WebSphere Liberty提供的角度服务刷新深度路线

Angular 通过WebSphere Liberty提供的角度服务刷新深度路线,angular,jakarta-ee,websphere-liberty,Angular,Jakarta Ee,Websphere Liberty,我正在创建一个新的Angular 4网站,该网站将被编译成WAR,并托管在WebSphereLiberty实例上。为了开始,我只是打包了英雄之旅演示应用程序。一切似乎都正常,直到我点击刷新 WAR位于上下文路径game,而base href位于“”,因此样式表和脚本总是作为index.html文件的对等项找到。应用程序routes.module.ts中设置的路由是演示应用程序的标准路由: const routes: Routes = [ { path: '', redirectTo: '

我正在创建一个新的Angular 4网站,该网站将被编译成WAR,并托管在WebSphereLiberty实例上。为了开始,我只是打包了英雄之旅演示应用程序。一切似乎都正常,直到我点击刷新

WAR位于上下文路径
game
,而
base href
位于
“”
,因此样式表和脚本总是作为index.html文件的对等项找到。
应用程序routes.module.ts中设置的路由是演示应用程序的标准路由:

const routes: Routes = [
    { path: '', redirectTo: '/dashboard', pathMatch: 'full' },
    { path: 'dashboard', component: DashboardComponent },
    { path: 'detail/:id', component: HeroDetailComponent },
    { path: 'heroes', component: HeroesComponent }
];
因此访问
localhost:8080/game
正确地重定向到
localhost:8080/game/dashboard

最初,它给出了一个404,所以我添加了一个web.xml,其中包含一个错误页面声明:

<error-page>
    <error-code>404</error-code>
    <location>/</location>
</error-page>

404
/
而且它有效!但只在仪表板上,而且是第一次。我注意到浏览器中的URL变成了
localhost:8080/dashboard/dashboard
。再次点击刷新会在控制台中显示空白页。此外,从任何其他页面刷新都会将我重定向到仪表板,但也会保留我的URL,不管它是什么。因此,
localhost:8080/game/heromes
变成了
localhost:8080/game/heromes/dashboard
,仪表板显示出来。立即刷新会破坏东西。我希望至少能被带到
localhost:8080/game/dashboard
,尽管最终我希望刷新能够完全工作,将我带到刷新之前的确切URL


基于这些路由,总是会转到仪表板是有道理的,但为什么我的URL会被连接起来呢?要正确设置此设置并在刷新时导航回正确路径,我缺少什么?问题出在重定向上吗?还是路由?

我设法解决了这个问题。我将base href设置为“/”,并调整了构建以强制“/”作为war的上下文根。正如我所期望的那样,刷新工作总是让我回到同一页。不幸的是,我不知道是否有可能在一个上下文根不可知的方式刷新工作。